左连接查询未按计划进行

时间:2016-01-11 21:33:52

标签: mysql sql join left-join

我当前有一个应该执行以下操作的查询:

它在表格中检查了Tafel'最大数量的玩家'是。然后它进入RoundRegistered'表,以查看是否有人已经注册到该表。

它现在做的是:它检查是否有一个&tffel'那还不够。如果是这样的话,它会返回第一个,所以如果有更多它不关心它们,它只需要第一个。

但这是我的问题:如果在RoundRegistered'中没有至少1条记录。桌子上,它找不到任何Tafel'记录。所以我想要做的就是左连接,所以它仍然可以回馈一个' Tafel'在同样的限制下记录。唯一阻止它的东西(我认为)就是HAVING ..

''.join([s[i] for i in xrange(0, len(s), 2)])

任何人都有任何想法? 感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用左连接

SELECT T.* FROM TAFEL AS T
LEFT JOIN RoundRegistration AS RR ON RR.TafelID = T.ID
WHERE RR.RONDE = 1
GROUP BY T.ID
HAVING COUNT(RR.ID) < T.Max_Aantal_spelers
LIMIT 1

没有&#39; LEFT&#39;你在做什么&#39; INNER JOIN&#39;

答案 1 :(得分:0)

WHERE子句正在撤消LEFT JOIN。将条件移动到ON子句:

SELECT T.*
FROM TAFEL T LEFT JOIN
     RoundRegistration RR
     ON RR.TafelID = T.ID AND RR.RONDE = 1
GROUP BY T.ID
HAVING COUNT(RR.ID) < T.Max_Aantal_spelers
LIMIT 1