次のテーブルを持つ sqlite データベースがあります。
CREATE TABLE games (name text, date text, winloss int, gameid int, pointsfor int, pointsagainst int);
2 つのサンプル レコードは次のようになります。
Anna A, 7/12/13, 0, 345, 56, 28
Barley B, 7/12/13, 1, 345, 28, 56
(Barley のチームが負け、Anna が勝ちました。各ゲームには、各チームに複数のプレーヤーがいます。) あるチームに x 人のプレーヤーがいて、別のチームに y 人のプレーヤーがいたすべてのゲームと、それらの累積結果を返すクエリを作成したいと考えています。ゲーム。
私は perl と csv ファイルを使用してこれを行う方法を知っており、同じ方法を dbi インターフェースで使用できると信じています。ただし、SQL クエリのみを使用してこのレポートを作成する方法を知りたいです。私は SQL の初心者であり、ソリューションには、CASE WHEN または JOIN を使用してテーブルをピボットして新しいテーブルを作成することが含まれる可能性があると思います。しかし、私はそれを行う方法がわかりません。
このクエリは、プレーヤーが同じチームに所属し、勝った (winloss の値によっては負けた) すべてのゲームを返します。
select gameid,date from games
where name in ('Anna A', 'Barley B') and winloss=1
group by gameid
having count(*)>1;
しかし、そのクエリを一般化して、他のチームのプレーヤーとの試合を返す方法がわかりません。