私のタイトルが不明な場合は申し訳ありません。私は自分のカードゲームのロビーシステムを作ろうとしています。ユーザーが参加ゲームを押すと、選択したゲームでどれくらいのスペースが利用可能かをサーバーが確認して、最小のプレイヤーでチームに追加します(現在は常に各チームに1人のプレイヤーがいますが、いくつかの点では1チームあたり2人のプレイヤーに、おそらく2つ以上のチームに)。カウントが0であっても、Mysqlの参加カウントが表示されます
私が持っているテーブルは以下のとおりです。
はgame_teamsのTEAM_IDで
game_id, team_id, score
game_players
user_id, game_id, team_id
をgame_teams、それはより多くのように思えたので、ユニークなまたは自動インクリメントされませんすべてのゲームで各チームのユニークな価値を持つためのオーバーヘッドは、主にプレイヤーの配置のためだけにあります。そのため、すべての試合にはチーム数に応じて1-2または1-3のチームがあります。
私は願っていた出力のようなものです:
game_id | team_id | team_size
8 | 1 | 1
8 | 2 | 0
現在、私が持っているクエリは以下の通りですが、彼らは私が期待してい何をしていません。
これは、これはほぼ右のようですが、それは私だけすでにそれらに少なくとも1人のプレーヤーを持っているチームを返し、すべてのチーム1のプレイヤーとチーム2内の全てのプレイヤーがゲームIDを無視して
SELECT games.game_id, COUNT(game_players.user_id) AS team_size, game_teams2.team_id
FROM games
JOIN game_teams2 ON games.game_id=game_teams2.game_id
JOIN game_players ON game_players.team_id=game_teams2.team_id
WHERE games.game_id=1 GROUP BY game_teams2.team_id
を返します。チームにそれに関連付けられたプレーヤーがない場合、実際には0が返される必要があります。
SELECT game_players.game_id,
COUNT(game_players.user_id) AS team_size, game_players.team_id
FROM game_players WHERE game_players.game_id=8 GROUP BY game_players.team_id
希望する出力を得るために他に何をしようとしているのかよく分かりません。
ご協力いただければ幸いです。
左結合が必要であり、カウントがNULLであることを意味します。結合は内部結合Iを意味します。E.両方のテーブルのキーが一致する必要があります。 – jimmy8ball