2013-03-19 9 views
6

:どのように多くの選手が各チームに所属しているのですか?SELECT COUNT 1対多の関係全体で1-∞の関係(チームにプレイヤー)を持つ2つのテーブル</p> <p><strong>プレーヤー</strong></p> <p>と</p> <p><strong>チーム</strong></p> <p>の場合

未遂:

SELECT team.teamid, (SELECT COUNT(player.team) FROM player) 
FROM team 
LEFT JOIN player ON player.team = team.teamid 
+1

適切なタグ(Oracle、SQL Server、MySQLなど)を追加して、ターゲットとするRDBMSを指定してください。普遍的にサポートされていない言語や製品の機能を利用した回答があるかもしれません。また、特定のRDBMSでタグを付けることで、あなたの質問にはより適切な回答が得られる可能性があります。 – Taryn

+0

確かです。そのMySQLは:SQLは非常に汎用的なので、違いはないと仮定します – Stumbler

+1

これは簡単なSQLかもしれませんが、使用するrdbmsは常に指定する必要があります。 :) – Taryn

答えて

16

いくつかのチームは選手が割り当てられていない場合、それは正しい結果にイベントを与える

SELECT t.teamid, COUNT(p.team) player_count 
FROM team t LEFT JOIN 
    player p ON p.team = t.teamid 
GROUP BY t.teamid 

SQLFiddle

を試してみてください。そのためにsqlfiddleを参照してください(チーム3にはプレーヤーがありません)。

+0

JOINsを使わないで同じ結果を得ることができますか? – f1ames

+0

@ f1amesその理由は何ですか? – peterm

+0

好奇心があり、私はJOINよりWHEREを使うほうが好きです。プラス私は3つのテーブルを結合する何とか複雑なクエリを持っているとそれは簡単に結合で新しいクエリを作成するよりもそれを変更する:) – f1ames

関連する問題

 関連する問題