2010-12-18 21 views
0

Ich habe drei Tabellen: player(playerId, Name), game(gameId, gameName) und .Möchten Abfrage Auswahl aus einer Tabelle basierend auf nicht in einer anderen Tabelle erscheinen

Ich möchte die Zeilen von gameResults, wo gameId nicht existiert in Tabelle game.

Meine Frage ist:

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 
    ) 

auch ich versucht:

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

zu verstehen, dass nicht notwendig sein wird, als [gameResults.gameId] ist ein Fremdschlüssel für [game.gameId]. Die Abfrage gibt zer ... was? Oh, du hast RI nicht benutzt? – Ronnis

+0

@Ronnis: LOL. Meine Wette ist, dass er versucht, das jetzt zu beheben. –

Antwort

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) 

schnell und schmutzig, aber seine leicht

Verwandte Themen