2014-11-24 113 views
0

我想从两个表中取出JOIN,并将结果表与第三个表加入但是它的抛出错误,让我知道我在这里做错了什么 -从两个表加入,然后从结果加入到第三个表mysql

SELECT e.id as e_id, e.name as e_name, e.artist_id as e_artist_id, e.event_date as e_date, 
     v.id as v_id, v.name as v_name, v.address as v_address, v.latitude as v_latitude, v.longitude as v_longitude 
FROM events e 
LEFT JOIN venues v 
ON e.venue_id = v.id WHERE v.id = 12 
LEFT JOIN artists a 
ON e.artist_id = a.id 
+1

什么错误是将其掷 - 因为这就像一个线索 – Strawberry 2014-11-24 21:37:18

+0

#1064 - 你在你的SQL语法错误;检查与您的MySQL服务器版本对应的手册,以找到正确的语法,以便在'LEFT JOIN artists'附近使用' ON e.artist_id = a.id 第6行的限制0,25' – Trialcoder 2014-11-24 21:37:54

+2

WHERE在最后 - 尽管如果它是一个左加入那么应该是AND – Strawberry 2014-11-24 21:38:08

回答

1

您需要将WHERE条款更改为AND -

SELECT e.id as e_id, e.name as e_name, e.artist_id as e_artist_id, e.event_date as e_date, 
     v.id as v_id, v.name as v_name, v.address as v_address, v.latitude as v_latitude, v.longitude as v_longitude 
FROM events e 
LEFT JOIN venues v 
ON e.venue_id = v.id AND v.id = 12 
LEFT JOIN artists a 
ON e.artist_id = a.id 
+1

这会给出意想不到的结果 - 'WHERE v.id = 12'应该处于ON状态。 – Siyual 2014-11-24 21:43:29

+0

你不能在'ON'中放置'WHERE' @Siyual,它会导致语法错误。这是如何产生意想不到的结果? – 2014-11-24 21:44:37

+0

@JayBlanchard - 这是否定'外部连接'。我怀疑OP想要类似'left left venues v on e.venue_id = v.id and v.id = 12' ... – sgeddes 2014-11-24 21:48:35