これは複雑なクエリですが、私はスヌーカーのマッチのデータベースを持っていて、誰が決定したフレームでプレーして勝ったのかに関する統計を生成しようとしています(ルールを心配しないでくださいあなたがゲームを知らない場合)。複数の列からのSELECT DISTINCT
表:私が何をしようとしています何
ID player1 player2 bestOf player1Score player2Score
1 1 2 9 5 0
2 2 1 9 5 4
3 1 2 9 5 4
4 2 1 9 4 5
には、次のようなものです:
SELECT COUNT(*) AS played, DISTINCT(player1,player2) AS playerID
FROM matches
WHERE (player1Score=BestOf/2 + 0.5 AND player2Score=BestOf/2 - 0.5)
GROUP BY playerID
上記のクエリは動作しません、私はDISTINCT信じているように、複数の列をサポートしていません。 。私はトップテーブルから探している結果である:それが最後のフレームではないとして
playerID played won
1 3 2
2 3 1
表の一番上の行は、表示されません。
SELECT GROUP(player1,player2)
SELECT player1 + player2 AS playerID, select DISTINCT(playerID)
SELECT (player1 + player2) AS playerID GROUP BY playerID
と良いいくつかの他:
私は、次のようなバリエーションを試してみました。どんなヒントもありがとう!
を取得するために、これらの2つのテーブルを結合:http://dev.mysql.com/doc/refman/5.5/en/string -functions.html#function_concat – Interrobang
うーん、嫌なデザイン。データベースの正規化を学びます。心配しないで、それは[正規表現]ではありません(http://twitter.com/#!/shanselman/status/190543146323685377)、あなたはそれをかなり簡単に学ぶことができます:-) –
プレイヤー1とプレイヤーはどのようにプレイできますか三つのゲームだけ。サンプルデータごとに、彼らは4試合に出場したようだ。プレイヤー1は3試合、プレイヤー2は1試合に勝った。 –