2

次のテーブルを持つ 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;

しかし、そのクエリを一般化して、他のチームのプレーヤーとの試合を返す方法がわかりません。

4

2 に答える 2

0

このようなものが役立つかもしれません:

where name in ('Anna A', 'Barley B') 

への変更

where name in (SELECT DISTINCT Player FROM games) 
于 2013-07-25T15:12:22.283 に答える