Suche nach Vorkommnis über mehrere Tabellen

patator

Mitglied
Hallo, leider konnte ich nichts brauchbares finden.

Ich schildere einfach mal mein Problem.
Habe einen Online Shop geschrieben, der unter anderem eine Buchstabensuche bereitstellt.
Klickt man nun z.B. auf Buchstabe A so sucht er aus der Tabelle Artikel innerhalb der Spalte Bezeichnung nach dem Anfangsbuchstaben A und findet diese auch.

Hier der Auszug aus dem Query:
SELECT * FROM artikel WHERE artikel_bezeichnung LIKE '$bs%'

Das alles klappt perfekt

Nun mein Problem:
es gibt eine weitere Tabelle die nennt sich Hersteller, diese behinhaltet eine id und die Herstellerbezeichnung.
Die id des Herstellers befindet sich auch in der oben erwähnten artikel Tabelle.

Ich möchte nun erreichen, dass der Query ebenfalls die Suche nach dem Anfangsbuchstaben auf die Tabelle hersteller erweitert, praktisch einmal innerhalb der Bezichnung beim Artikel und zum zweiten innerhalb der Herstellerbezeichnung in Tabelle hersteller.

Vielleicht hat einer ne Anregung für mich.

Vielen Dank schon mal im Voraus.
 
Hi

Du kannst beide Tabellen über einen join verbinden und die Suche um einen weiteren Punkt in der Bedingung erweitern

bsp.

SELECT * FROM artikel inner join hersteller on artikel.hid = hersteller.id WHERE artikel_bezeichnung LIKE '$bs%' or hersteller LIKE '$bs%'

Operator or setzt alle Hersteller, die mit gleichem BS anfangen und alle Artikel, die mit gleichem BS anfangen.

Opeator and holt den Datensatz, wo in einem Datensatz sowohl Hersteller als auch Artikel mit gleichem BS anfangen.

Dann gibts noch die Möglichkeit, (wenn man unabhängig voneinander Daten darstellen möchte), beide Tabelle über einen union zu verbinden.
 
Hallo, jetzt zerbreche ich mir schon die ganze Nacht den Kopf.

Das hat nun funktioniert:
SELECT * FROM artikel inner join hersteller on artikel.hid = hersteller.id WHERE artikel_bezeichnung LIKE '$bs%' or hersteller LIKE '$bs%'

Jetzt habe ich aber noch mehrere Kleine Tabellen wie z.B. die hersteller die ich ebenfalls im selben Query abtasten möchte wie kann ich denn im selben Query das bewerkstelligen dass der mit einer Oder Bedingung anderer Datensätze abfrägt?
 
Evt. suchst du danach?
Code:
SELECT * FROM artikel AS a inner join hersteller AS h on a.artikel.hid = h.hhersteller.id 
WHERE a.artikel_bezeichnung LIKE '$bs%' or h.hersteller LIKE '$bs%'
 
ne nicht ganz
hab noch ungefähr 6 weitere tabellen.
die artikel tabelle hat jeweils die id der 6 anderen tabllen drin,
die 6 anderen tabllen haben auch jeweils eine bezeichnung.
nun möchte ich wenn ich z.b nach dem anfangsbuchstaben D suche,
alle Datensätze anzeigen wo beim artikel.bezeichnung D steht,
dann tabelle1.bezeichnung D steht usw.
 
hast Du mir da nen Ansatz?
Aufbau der Tabllen:

Artikel:
id,bezeichnung,idk1,idk2,idk3,idk4,idk5,idk6

K1:
id,bezeichnung

K2:
id,bezeichnung

K3:
id,bezeichnung

K4:
id,bezeichnung

K5:
id,bezeichnung

K6:
id,bezeichnung

Nun möchte ich nur die Artikel anzeigen, bei denen
1.) Der Anfangsbuchstabe mit der Artikel.bezeichnung passt
2.) Der Anfangsbuchstabe mit der k1.bezeichnung passt
3.) Der Anfangsbuchstabe mit der k2.bezeichnung passt usw.

ich schaffe es nicht den Query zu erstellen.
Ich wäre Euch so so so dankbar über einen weiterbrindenden Tip.
 
Hi

Kannst du mal erläutern für was die Tabellen sind. So wie ich das sehe ist dein Datenbankdesign nicht gerade das Beste.

Mfg Akkie
 
Das Datenbankdesign hat was mit den Kategorieen zu tun.
Jeder Artikel kann neben einer Hauptkategorie in bis zu 6 Unterkategorien drin sein.
Nun möchte ich eben erreichen dass wenn ich z.B. nach D% suche,
er mir die Artikelbezeichnung durchgeht nach dem Treffer D% oder ´D% in Hauptkategorie oder D% in Kategorie1 usw.
Hast Du mir nen Tip?

P.S. Der Aufbau der Kategorien ist so ähnlich wie das bei eBay.
 
Im Moment habe bekomme ich Datensätze wie gewünscht mit einer Hauptkategorie
wenn ich :

SELECT * FROM artikel AS a INNER JOIN hauptkategorie AS hk ON a.artikel_hauptkategorie = hk.id WHERE a.artikel_bezeichnung LIKE "D%" OR hk.bezeichnung LIKE "D%"

ermittle.

Allerdings weis ich jetzt nicht wie ich das selbe auf die anderen Tabellen anwenden kann.
Es muss irgendwie in den Query der Vergleich mit rein, dass er in K1, K2, K3 usw. die Bezeichnung auch noch durchlaufen soll mit dem Vergleich nach D%.

Also auf gut Deutsch:
In der Artikel Tabelle ist sind die IDs der jeweiligen Kategorieneinträge enthalten sowie die Bezeichnung des Artikels.
Nun möchte ich alle Artikel ausgeben auf die das Suchkriterium D% in der Artikel.Bezeichnung oder der k1.bezeichnung oder k2.bezeichnung usw. passt ausgeben.
 
Zurück