2016-09-23 1 views
0

Ich versuche, die left outer join von 2 Tabellen in Bezug auf zwei Tabellen zu bekommen, aber ich bin nicht in der Lage, diese Abfrage ausführt, wird phpMyAdmin #1064 error on line 12 geben, wenn diese Abfrage ausgeführt wird:LEFT JOIN von zwei Tabellen Abfrage Failing

SELECT 
pt.id as planid, 
pt.trip_name, 
pt.description, 
cor.latitude, 
cor.longitude, 
bb.id as bookmarkid, 
bb.num_of_persons as persons 
FROM 
planned_trips as pt, 
coordinates as cor, 
LEFT JOIN Bookmarkedby as bb,Users as user 
ON 
user.id = 1 AND 
user.id = bb.user_id AND 
bb.plannedtrips_id = pt.id AND 
pt.coordinates_id = cor.id' 

Ich habe für eine Stunde kämpfen, was fehlt mir ?? meine Datenbankschema sieht wie folgt aus:

schema1

ich zur Zeit nur meine Abfrage vorbereiten ich brauche diese Abfrage auf CodeIgnitor laufen.

+1

zu ändern Sie können nicht zwei Tabellennamen nach 'LEFT JOIN' setzen. Sie benötigen eine separate 'LEFT JOIN'-Klausel für jede Tabelle, der Sie beitreten möchten. – Barmar

+0

Sie sollten auch explizit 'INNER JOIN' Klauseln für die anderen Tabellen verwenden. – Barmar

+0

Problem ist, wo zu verschmelzen, INNER JOIN Query mit LINKEN JOIN diejenigen –

Antwort

2

Sie benötigen eine separate LEFT JOIN für jede Tabelle.

SELECT 
    pt.id as planid, 
    pt.trip_name, 
    pt.description, 
    cor.latitude, 
    cor.longitude, 
    bb.id as bookmarkid, 
    bb.num_of_persons as persons 
FROM planned_trips as pt 
INNER JOIN coordinates as cor ON pt.coordinates_id = cor.id 
LEFT JOIN Bookmarkedby as bb ON bb.plannedtrips_id = pt.id 
LEFT JOIN Users as user ON user.id = bb.user_id AND user.id = 1 
+0

so können wir wiederholt getrennte linke Verbindung tun, das ist neu für mich danke –

0

Problem ist in der Zeile LEFT JOIN Bookmarkedby as bb,Users as user. Erwägen Sie, es in

FROM 
planned_trips as pt 
JOIN coordinates as cor ON pt.coordinates_id = cor.id 
LEFT JOIN Bookmarkedby as bb ON bb.plannedtrips_id = pt.id 
LEFT JOIN Users as user ON user.id = bb.user_id 
AND user.id = 1