2013-02-14 169 views
3

好吧,我是半效率的SQL,我试着在左连接中使用OR语句,发现它没有工作。MYSQL左加入条件或

我这样做的原因是因为我有两个表中的两列,我试图用来加入,如果一个返回NULL。我有两张桌子 - 赛事和季节。每个表都有一个赞助商ID列,我用它来加入赞助商表。这背后的原因是因为有时单个事件是赞助的,而不是整个赛季或其他方式。

我的问题是最好的办法,我可以做到这一点。我原来的查询与此不一样,但它的概念是相同的(除非它不抓取每个表中的每一列)。

SELECT sp.*, re.*, ev.*, se.* 
FROM events ev 
INNER JOIN seasons se ON se.season_id=ev.event_sid 
INNER JOIN results re ON ev.event_id=re.results_eid 
LEFT JOIN sponsors sp ON ev.event_sponsor=sp.sponsor_id 

,并在年底我试图钉在​​

最后我想加入提案国表或者ev.event_sponsor或se.season_sponsor。任何帮助深表感谢。我做了一些研究,找不到我想要完成的任务。

+0

什么新的',而不是左JOIN''或'? – 2013-02-14 15:30:57

+0

如果实际上返回了所需的数据,那么它不会重载第一个左连接吗? – Tyler 2013-02-14 15:32:54

回答

1

尝试:

SELECT sp.*, re.*, ev.*, se.* 
FROM events ev 
INNER JOIN seasons se ON se.season_id=ev.event_sid 
INNER JOIN results re ON ev.event_id=re.results_eid 
LEFT JOIN sponsors sp ON COALESCE(ev.event_sponsor,se.season_sponsor)=sp.sponsor_id 
+0

非常感谢您的帮助。这正是我需要的。再次感谢这个简单而及时的答案。 – Tyler 2013-02-14 15:43:09

+0

很高兴这是你在找什么。 – 2013-02-14 15:45:40

+0

在这种情况下,是否对每行都解释为'COALESCE'?由于我不明白'COALESCE'在这种情况下的表现如何,请阅读http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce – 2013-02-14 16:36:53