私は2つのテーブルを持っています:
tournament_teams:
ID TEAM TournamentID
2 Berp 7
3 Dang 7
tournament_pool_team:
ID TournamentID PoolID TeamID VersusTeamID
1 7 5 2 3
すべてのチームがプール内にあるため、このクエリは何も返さないはずです(teamidおよびvsteamid)
SELECT t1.id,
t1.team
FROM tournament_teams t1
WHERE t1.id NOT IN(SELECT t2.id
FROM tournament_pool_team t2
WHERE ( t2.teamid = t1.id
OR t2.versusteamid = t1.id )
AND poolid = '5')
AND t1.tournamentid = '7'
ORDER BY team ASC
テーブルに存在しないチームのみを表示したい:Tournament_pool_team; チームは、そのテーブルのteamidとvsteamidで指定されます。tournament_pool_teamで指定されていないtournament_teamsからチームをプルする必要があります。現在のエントリでは、2と3の両方のIDがtournament_pool_teamで指定されているため、何も返さないはずです。
SELECT t1.id,
t1.team
FROM tournament_teams t1
WHERE t1.id NOT IN(SELECT t2.teamid
FROM tournament_pool_team t2
WHERE t2.teamid = t1.id
AND poolid = '5'
UNION
SELECT t2.versusteamid
FROM tournament_pool_team t2
WHERE t2.versusteamid = t1.id
AND poolid = '5')
AND t1.tournamentid = '7'
ORDER BY team ASC
私はあなたのコンテキスト(あなたが実装しようとしていた方法)に従ってクエリを変更しました。t1.teamidをt2.idと一致させていましたが、代わりにt1.idをt2.teamidおよびt2.versusteamidと一致させる必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加