1

チーム表

+------+------------+
|team_id |    week    |
+------+------------+
|    1 | 2012-09-10 |
|    2 | 2012-09-10 |
|    3 | 2012-09-17 |
|    4 | 2012-09-17 |
+------+------------+

TeamPlayers 参加テーブル

+---------+-----------+
| team_id | player_id |
+---------+-----------+
|       1 |         1 |
|       2 |         2 |
|       3 |         1 |
|       4 |         1 |
+---------+-----------+

上記のスキーマに基づいて、今週と先週の間に追加されたプレーヤーと削除されたプレーヤーを表示するクエリをまとめる必要があります。

例えば

2012-09-10 と 2012-1=09-17 の週の間に、プレーヤー 8 は正常に移動しました (彼は先週 1 チーム、今週 2 チームに出場しました)。
プレーヤー 9 は、先週 2012-09-10 にチームに参加しましたが、今週 2012-09-17 には参加しませんでした。

私は現在、アプリケーションコードでこれを行っています(私はSQLの専門家ではないため)が、これをデータベース(mysql)で直接実行する方法がある可能性が高いと感じています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

ここから始めます。微調整が必​​要な場合があります。それが役に立てば幸い。

SELECT * FROM teams t
INTO #TMP
INNER JOIN teamsplayers tp ON tp.team_id = t.team_id
;

SELECT count(*), week, player_id
FROM #TMP
GROUP BY week, player_id
ORDER BY week, player_id
;
Edit:

DROP TABLE #TMP;

于 2012-09-20T04:36:18.080 に答える