Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Join über 3 Tabellen
#1
Liebe Community,

mich überfordert in einem Plugin gerade das Joinen über 3 Tabellen. Rolleyes 
Das Plugin gibt aus einer bestimmten Foren-fid Zusatzinformationen zum Thread in einer Liste aus.
Diese Zusatz-Infos werden beim Absenden von Firstpost über Eingabefelder in die Datenbank geschrieben.
Aus verschiedenen Tabellen wird danach die Liste generiert.

Tabelle 1 (tid, Info1, Info2...)
Tabelle 2 (mybb_threads)
Tabelle 3 (tid, icon)

PHP-Code:
$wanted $db->query("
    SELECT w.*, ti.icon FROM "
.TABLE_PREFIX."info w
    JOIN "
.TABLE_PREFIX."threads t ON (w.tid = t.tid)
    JOIN "
.TABLE_PREFIX."threadicons ti ON (w.tid = ti.tid)");  

Bis zum ersten Join funktioniert alles perfekt.
Sobald ich aber die dritte Tabelle mit den Threadicons joine, komme ich auf´s Glatteis. Rolleyes 

Die ON-Klausel im letzten Join sorgt dafür, dass ich nur noch Datensätze bekomme, wo ein Icon in der Tabelle existiert. Das ist natürlich so nicht gewollt. Aber egal was ich mit dieser Klausel mache...
Entweder ich bekomme Datensätze mehrfach oder ich bekomme Datensätze, die zwar ein Icon haben, aber in der Tabelle Info gar nicht geführt sind, da sie aus aus einer anderen Foren-fid stammen, oder... oder... oder

Ich bin überfordert. Big Grin Big Grin 
Kann es daran liegen, dass alles Tabellen die Spalte "tid" als PrimaryKey haben und ich diesen Key in den Klauseln benutze.

Kann mir wer einen Tipp geben?
Danke!!
Zitieren
#2
JOIN ergibt hier wenig Sinn (bei beiden Tabellen), probiere es bitte mal mit LEFT JOIN.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Hey Stefan Wink 

nach erstem Test sieht das soweit gut aus, wenn ich Tabelle 2 und 3 mit LEFT joine.
Wenn´s das jetzt war, dann herzlichen Dank - I'm happy.

Ich werd´s jetzt mal näher testen, aber schonmal vielen Dank!!

Grüße
Zitieren