2016-08-23 6 views
0

Dies ist wirklich ein MeekroDB exklusives Problem, nur um meinen Kopf um Left_Join zu wickeln.MySQL Left Join (mit MeekroDB)

Ich habe 2 Tabellen: comp_checklis t und comp_checklist_items

ich alle Zeilen aus comp_checklist erhalten möchten, wo der Benutzer-ID übereinstimmt und das hat gut funktioniert:

DB::query("SELECT * FROM comp_checklist WHERE user_id = %i", $user_id);

Jetzt wand ich zu bekommen dieselbe Abfrage (alle Zeilen von comp_checklist, in der die Benutzer-ID übereinstimmt) und alle Zeilen comp_checklist_items hinzufügen, in denen checklist_id in beiden Tabellen übereinstimmt (checklist_id ist der Primärschlüssel in comp_checklist Tisch). Früher habe ich unten aber nur false

DB::query("SELECT * FROM comp_checklist WHERE user_id = %i LEFT JOIN comp_checklist_items on checklist_id = comp_checklist.checklist_id", $user_id);

Antwort

0

erhalten JOIN kommen sollten, bevor WHERE, und alle Spalten sollten den Tabellennamen haben, oder Sie erhalten eine Fehlermeldung:

DB::query("SELECT * FROM comp_checklist 
      LEFT JOIN comp_checklist_items 
      ON comp_checklist_items.checklist_id = comp_checklist.checklist_id 
      WHERE comp_checklist.user_id = %i ", $user_id); 
+0

Got ya, das funktioniert aber in eine andere Art, die ich beabsichtigte. Im Grunde gab es Checkliste A zweimal, einmal für jedes Element statt Checkliste A einmal mit einem anderen Array mit den zugehörigen Elementen (verschachtelt) – Packy

+0

@Packy Wenn Sie alle Zeilen mit user_id = 3 zum Beispiel erhalten möchten, und es gibt zwei Zeilen In comp_checklist_items für diese Checkliste erhalten Sie zwei Ergebnisse. Wenn Sie etwas anderes erhalten möchten, geben Sie einige Beispieldaten und ein Muster der erwarteten Ergebnismenge ein. – Galz