Innerhalb mehrere mysql Tabellen suchen

MySQL, PostgreSQL, SQLite
sandro
Posts: 46
Joined: 2007-02-11 23:39

Innerhalb mehrere mysql Tabellen suchen

Post by sandro » 2008-04-15 15:18

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

terx`
Posts: 23
Joined: 2008-04-10 18:58
Location: Südoldenburger Land

Re: Innerhalb mehrere mysql Tabellen suchen

Post by terx` » 2008-04-15 15:59

Am einfachsten wird es wohl sein, alle Tabellen in der Suchanfrage zu benennen.

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Innerhalb mehrere mysql Tabellen suchen

Post by sandro » 2008-04-15 16:04

Hallo,
Kannst du vielleicht etwas genauer schreiben, oder mal kurz den syntax dazu schreiben, z.B. SELECT …

Gruß, Sandro

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Innerhalb mehrere mysql Tabellen suchen

Post by Roger Wilco » 2008-04-15 16:07

Die Syntax hast du in deinem ersten Beitrag doch schon weitgehend korrekt.

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Innerhalb mehrere mysql Tabellen suchen

Post by sandro » 2008-04-15 16:31

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%'))";

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Innerhalb mehrere mysql Tabellen suchen

Post by Roger Wilco » 2008-04-15 16:39

Beschreib doch mal, was du genau vorhast.

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Innerhalb mehrere mysql Tabellen suchen

Post by sandro » 2008-04-15 16:48

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

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Innerhalb mehrere mysql Tabellen suchen

Post by Roger Wilco » 2008-04-15 17:01

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?

sandro
Posts: 46
Joined: 2007-02-11 23:39

Re: Innerhalb mehrere mysql Tabellen suchen

Post by sandro » 2008-04-15 17:12

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Innerhalb mehrere mysql Tabellen suchen

Post by Joe User » 2008-04-15 17:19

Wie sieht denn das Schema einer dieser Tables aus?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

terx`
Posts: 23
Joined: 2008-04-10 18:58
Location: Südoldenburger Land

Re: Innerhalb mehrere mysql Tabellen suchen

Post by terx` » 2008-04-15 21:51

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.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Innerhalb mehrere mysql Tabellen suchen

Post by Joe User » 2008-04-15 21:57

Produktbeschreibungen und Bewertungen sowie andere TEXT/BLOB-Felder lagert man aus, aber keine Kategoriern...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: Innerhalb mehrere mysql Tabellen suchen

Post by isotopp » 2008-04-19 20:13

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 ... erendipity[lang_selected]=de bzw
http://www.azundris.com/hacks/text/nermalisierung.txt

Eine Tabelle pro Kategorie ist hanebüchener Unsinn.