【发布时间】:2016-01-11 21:33:51
【问题描述】:
我目前有一个查询应该执行以下操作:
它在“Tafel”表中检查“最大玩家数量”是多少。然后它会转到“RoundRegistered”表,看看是否有人已经注册到该表。
它现在所做的是:它检查是否有一个“tafel”还没有装满。如果是这种情况,它会返回第一个,所以如果有更多它不关心它们,它只需要第一个。
但这是我的问题:如果“RoundRegistered”表中没有至少 1 条记录,它将找不到任何“Tafel”记录。所以我想做的是左连接,所以它仍然会在相同的限制下返回一个“Tafel”记录。唯一阻止它的东西(我认为)是 HAVING..
SELECT T.* FROM TAFEL AS T
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
有人知道吗? 谢谢。
【问题讨论】:
-
该查询中没有
LEFT。 -
@philipxy 是的,因为 LEFT 连接不返回任何内容。可能是因为 HAVING。
-
你需要一个左连接来获取没有出现在 RoundRegistration 中的表的行(对于让步轮)。
-
现在您似乎在告诉我们 RoundRegistration 包含不同锦标赛和不同回合的注册数据。表中的候选键(PRIMARY KEY 和/或 UNIQUE NOT NULL)是什么?请显示示例表输入、查询和所需输出。如果可以的话,通过在每个表中和结果中来说明行的状态。