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.