2016-09-23 95 views
0

我试图让2 left outer join表相对于两个表的,但我无法执行该查询,运行该查询时,phpMyAdmin是给#1064 error on line 12LEFT JOIN 2个表查询失败

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' 

我奋斗了一个小时,我在想什么? 我的数据库架构是这样的:

schema1

我目前正准备我的查询我需要在codeIgnitor运行此查询。

+1

“LEFT JOIN”后面不能放两个表名。您需要为要加入的每个表单独一个'LEFT JOIN'子句。 – Barmar

+0

您还应该为其他表使用显式的'INNER JOIN'子句。 – Barmar

+0

问题是在哪里合并,INNER JOIN查询与LEFT JOIN –

回答

2

对于每个表格,您需要单独的LEFT JOIN

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

所以我们可以重复单独的左连接,这对我来说是新的感谢 –

0

问题是在线LEFT JOIN Bookmarkedby as bb,Users as user。考虑将其更改为

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