2010-12-18 2 views
0

私は3つのテーブル:player(playerId, Name),game(gameId, gameName)およびgameResults(gameId, playerId, results)を持っています。別のテーブルに表示されていないことに基づいてテーブルから選択したクエリを書きたい

gameResultsからgameIdのテーブルgameに行を戻したいとします。

私のクエリは次のとおりです。

SELECT DISTINCT 
    gameresults.playerId, 
    gameresults.results  
FROM 
    game, 
    gameresults, 
    player 
WHERE 
    gameresults.playerId = player.playerId 
    AND gameresults.gameId NOT IN (
     SELECT game.gameId; FROM game 
    ) 

も、私が試した:

SELECT DISTINCT 
    gameresults.playerId, 
    gameresults.results  
FROM 
    game, 
    gameresults, 
    player 
WHERE 
    gameresults.playerId = player.playerId 
    AND gameresults.gameId NOT EXISTS(
      SELECT race.raceId, FROM race 
    ) 
+1

[gameResults.gameId]は[game.gameId]の外部キーです。クエリは、ゼロを返します...何ですか?ああ、あなたはRIを使わなかったのですか? – Ronnis

+0

@ロンニス:LOL。私は彼が今それを修正しようとしているということです。 –

答えて

1
SELECT DISTINCT gameresults.playerId, gameresults.results, game.gameName 
FROM gameresults 
    LEFT JOIN game ON game.gameId = gameresults.gameId 
/* WHERE gameresults.gameName Is NULL <-- incorrect */ 
WHERE gameresults.gameId IS NULL; 
0
SELECT * FROM gameResults 
WHERE gameId NOT IN (SELECT gameid FROM game) 

理解し、迅速かつ汚いが、その簡単として必要ではないでしょう

関連する問題