我有两个定义游戏细节的表:一个包含游戏的表和一个包含移动的表。
我可以通过
来判断是谁SELECT (COUNT(idx) %2) FROM history WHERE gameID=x
on result = 1它是白色,结果= 0表示黑色。
现在我想选择一系列特定的游戏,这是我的举动。
我不知道我在比赛中是白人还是黑人。
所以现在我使用另一个游戏查询:
SELECT g.gameID
FROM games AS g
WHERE (g.whitePlayer = 2 or (g.blackPlayer = 2)
然后我使用gameID来查看它是否是我的举动。如果没有,那么我跳过那个游戏。
我想将这两者结合起来,我试图制作一个聚合子集但由于COUNT()
例如,这不起作用并且不返回任何内容:
SELECT *
FROM games as g
WHERE (g.whitePlayer = 2)
AND gameID IN (SELECT gameID
FROM history as h
HAVING (COUNT(h.idx) %2) = 1)
或
SELECT COUNT(h.idx)
FROM history as h
INNER JOIN
(SELECT gameID
FROM games
WHERE (whitePlayer = 2)) As thesegames ON h.gameID = thesegames.gameID
HAVING (COUNT(h.idx) %2) = 1
有没有人知道如何解决这个问题?
答案 0 :(得分:0)
试试这个
Select count(h.idx) , COUNT(h.idx) %2
From history as h
Inner Join games g
On h.gameID = g.gameID
WHERE whitePlayer=2
HAVING COUNT(h.idx) %2 = 1
答案 1 :(得分:0)
我还没完成,但这回答了我自己的问题
SELECT g.gameID, (count(h.idx)%2) as lastmove
FROM games as g
inner join history as h on g.gameID=h.gameID
WHERE (g.whitePlayer=2)
GROUP by g.gameID, g.whitePlayer
HAVING (g.whitePlayer=2 AND lastmove=0)