Page 1 of 1
Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 15:18
by sandro
Hallo,
ich habe eine MySQL-Datenbank mit mehreren Tabellen (ca. 50 Tabellen). Ich möchte innerhalb der Datenbank, in 40-Tabellen nach einem Zeichenkette (WHERE feld1 LIKE ’%suchwort%’) suchen.
SELECT f1,f2,f3 FROM … tab1,tab2,… tab40 WHERE … LIKE ’%suchwort%’
Könnte mir jemand bitte sagen, wie kann ich dieses am besten machen.
Vielen Dank im Voraus.
Gruß, Sandro
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 15:59
by terx`
Am einfachsten wird es wohl sein, alle Tabellen in der Suchanfrage zu benennen.
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 16:04
by sandro
Hallo,
Kannst du vielleicht etwas genauer schreiben, oder mal kurz den syntax dazu schreiben, z.B. SELECT …
Gruß, Sandro
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 16:07
by Roger Wilco
Die Syntax hast du in deinem ersten Beitrag doch schon weitgehend korrekt.
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 16:31
by sandro
Ich erhalte aber bei so einem SQL-Statement (siehe unten) ca. 8500 Datensätze selektiert! Obwohl in der Tabelle jeweils ca. 50 Datensätze vorhanden sind! 8O
Gruß, Sandro
Code: Select all
SELECT Tab1.Feld1, Tab2.Feld1
FROM Tab1, Tab2 WHERE ((Tab1.Feld1 like '%suchwort%') OR
(Tab2.Feld1 like '%suchwort%'))";
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 16:39
by Roger Wilco
Beschreib doch mal, was du genau vorhast.
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 16:48
by sandro
Also, ich habe eine MySQL-Datenbank mit mehreren Tabellen (ca. 50 Tabellen). Ich möchte innerhalb der Datenbank, in 40-Tabellen nach einer Zeichenkette suchen können.
Zum Beispiel wird es in einem Eingabefeld das Wort “Buch“ eingegeben, dann soll innerhalb der Tabellen (40-Tabellen) nach diesem Begriff gesucht werden. (Es handelt sich um ein Shop-System mit ca. 40-Kategorien)
Alle Tabellen sind identisch aufgebaut. Ich möchte jeweils in drei Feldern der Tabellen suchen.
Code: Select all
SELECT
Tab1.Feld1, Tab2.Feld1… Tab40.Feld1
Tab1.Feld2, Tab2.Feld2… Tab40.Feld2
Tab1.Feld3, Tab2.Feld3… Tab40.Feld3
FROM
Tab1, Tab2 … Tab40
WHERE (
(Tab1.Feld1 like '%suchwort%') OR
(Tab2.Feld1 like '%suchwort%') OR
…
(Tab40.Feld1 like '%suchwort%') OR
(Tab1.Feld2 like '%suchwort%') OR
(Tab2.Feld2 like '%suchwort%') OR
…
(Tab40.Feld2 like '%suchwort%') OR
(Tab1.Feld3 like '%suchwort%') OR
(Tab2.Feld3 like '%suchwort%') OR
…
(Tab40.Feld3 like '%suchwort%') OR
)";
Mein SQL-Statement wird wirklich sehr lang! :-s Gibt es vielleicht eine bessere Möglichkeit?
Gruß, Sandro
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 17:01
by Roger Wilco
http://sphinxsearch.com/
Wenn du für n Kategorien n verschiedene Tabellen mit identischem Schema führst, solltest du dein Datenbanklayout lieber nochmal überdenken. Was würdest du bspw. bei 100 Kategorien machen, oder bei 1000?
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 17:12
by sandro
Danke für den Hinweis. Die Kategorien haben selbst Unterkategorien und die Tabellen können wirklich sehr groß werden. Daher habe ich mich für so eine Struktur entschieden.
Gruß, Sandro
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 17:19
by Joe User
Wie sieht denn das Schema einer dieser Tables aus?
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 21:51
by terx`
Tabellen dürfen ja auch gerne riesig werden. Für MySQL sollte das kein Thema sein.
Das heißt: Alle Kategorien werden in einer Tabelle zusammengefasst, ggf. mit mehreren Primärschlüsseln, wenn man will. DAS macht alles einfacher, nicht das Auslagern in mehreren Tabellen.
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-15 21:57
by Joe User
Produktbeschreibungen und Bewertungen sowie andere TEXT/BLOB-Felder lagert man aus, aber keine Kategoriern...
Re: Innerhalb mehrere mysql Tabellen suchen
Posted: 2008-04-19 20:13
by isotopp
Sandro wrote:Zum Beispiel wird es in einem Eingabefeld das Wort “Buch“ eingegeben, dann soll innerhalb der Tabellen (40-Tabellen) nach diesem Begriff gesucht werden. (Es handelt sich um ein Shop-System mit ca. 40-Kategorien)
Lies
http://katze-mit-wut.azundris.com/index ... lected]=de bzw
http://www.azundris.com/hacks/text/nermalisierung.txt
Eine Tabelle pro Kategorie ist hanebüchener Unsinn.