1

ゲームの詳細を定義する 2 つのテーブルがあります。1 つはゲームのテーブル、もう 1 つは動きのテー​​ブルです。

誰の番かわかる

SELECT (COUNT(idx) %2) FROM history WHERE gameID=x

result=1 の場合は白、result=0 の場合は黒です。

ここで、特定の一連のゲームを選択したいと思います。

ゲームで私が白人か黒人かはわかりません。

そこで、ゲームに別のクエリを使用します。

SELECT g.gameID 
FROM games AS g
WHERE (g.whitePlayer = 2 or (g.blackPlayer = 2)

次に、gameID を使用して、それが自分の動きかどうかを確認します。そうでない場合は、そのゲームをスキップします。

これら2つを結合したいので、集約サブセットを作成しようとしましたが、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

誰もこれを解決する方法の手がかりを持っていますか?

http://sqlfiddle.com/#!2/425fb

4

2 に答える 2

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
于 2013-08-03T11:11:07.227 に答える
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)
于 2013-08-05T22:51:35.200 に答える