MySQL Abfrage über mehrere Tabellen

jackie05

Erfahrenes Mitglied
Hallo,
ich versuche schon eine Weile mehrere MySQL Tabellen in einer abfrage abzufragen, leider klappt das nicht so.
Ich habe sehr viele Einträge und man hat auch die möglichkeit, beliebige Einträge in einer Favoritenliste zu speichern.
Nur hab ich ein Problem mit der SQL abfrage.

Ich habe hier 4 Tabellen:
Tabelle1: keyboard_tab (für die Seiten, da man die Seiten beliebig benennen kann)
Tabelle2: keyboard_item (hier sind alle Einträge gespeichert mit keyboard_tab_id)
Tabelle3: favorites_cat (Kategorie für die Favoritenliste)
Tabelle4: favorites_item (hier werden dann die keyboard_item ids gespeichert favorites_id und keyboard_id "favorites_id ist für die jeweilige Kategorie von favorites_cat und keyboard_id sind die ids von keyboard_item, um später die Einträge in Favoritenliste zu identifizieren und die Daten dann auszulesen")

Das ganze habe ich so versucht abzufragen:
PHP:
select * from favorites_item a join keyboard_item b join keyboard_tab c on a.favorites_cat_id=1 where a.keyboard_item_id = b.id

Leider Zeigt er mir alles 3 Fach an.

Die Tabelle favorites_item soll abgefragt werden und anhand der ids, sollen die Daten von keyboard_tab und keyboard_item dann ausgelesen werden.

Ich hoffe, das ich mein Problem etwas erklären konnte und bedanke mich schon mal für die Hilfe.

Gruss
 
Hi

du hast zurzeit a.keyboard_item_id=b.id und stellst damit sicher, dass die Einträge von Tabelle a und b zusammenpassen (in der Ausgabe). Aber wo ist die Bedingung, dass auch der Teil aus Tabelle c noch dazupasst? ...

Ohne die wird das a-b-Ergebnis mit jeder Zeile aus c kombiniert, egal wie und ob die dazupasst oder nicht. Vermutlich gibts 3 Zeilen in c, also alles dreifach...
 
Danke für die antwort.

Ich kenne mich mit komplexere SQL Statement nicht so gut aus.

Ich möchte die Tabelle favorites_cat durchlaufen lassen und bei jeder Eintrag von der Tabelle favorites_cat, soll die Tabelle favorites_item durchgelaufen werden und eine Bedingung prüfen ob favorites_item.favorites_cat_id=favorites_cat.id ist, trifft diese zu, dann soll die Tabelle keyboard_item durchlaufen werden und eine Bedingungen prüfen ob keyboard_item.id=favorites_item.keyboard_item_id ist.

Wie könnte ich diese abfrage mit nur einer Schleife lösen?

Vielen Dank schon mal für die Hilfe.

Gruss
 

Neue Beiträge

Zurück