2013-08-06 17 views
6

I Sono presenti 3 tabelle con chiavi esterne. Desidero scrivere una stored procedure SQL Server per selezionare i record da uno di essi.Seleziona query da 3 tabelle con chiavi esterne

My tables

Ora, supponiamo che io voglio tutti i record Winner riferimento ai record giocatore che si riferiscono al gioco con l'ID = 2, come posso procedere?

Grazie.

+2

Si potrebbe applicare un INNER JOIN con un filtraggio in cui clausola; http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html –

risposta

6

aver specificato tutti i record Winner In modo che ho usato la sinistra si uniscono per il giocatore e il gioco. Ma il codice generale funziona in base alla condizione.

Try This,

select w.* from Winner w 
left Join Player p on p.ID_player = w.player_FK 
left join Game g on g.ID_game = p.Game_FK 
where Game.ID_game = 2 
+0

che funziona anche io ho appena provato ed è tutto ok grazie! –

+0

grazie per il tuo commento. – Selva

+0

@Selva, per favore, dimmi come eseguire la stessa operazione precedente con Group By, seleziona tutti gli ultimi record dei vincitori per tutti i giochi. – Avi

2

È necessario utilizzare un SELECT e INNER JOIN quindi per filtrare su GameID 2 è possibile utilizzare una clausola WHERE.

SELECT ID_Winner, Name, Lastname, Player_FK 
FROM Winner 
INNER JOIN Player on Player.ID_Pplayer = Winner.Player_FK 
INNER JOIN Game ON Game.ID_game = Player.Game_FK 
WHERE Game.ID_game = 2 
+0

quando lo faccio nel mio metodo che restituisce una lista (la classe per i record del vincitore che chiama la stored procedure) ottengo: System.IndexOutOfRangeException: ID_player –

+0

@SlimaneAgouram - questa è una domanda diversa. Dovresti accettare una risposta qui (se ti ha aiutato con il problema originale) e quindi postare una nuova domanda con i dettagli del tuo problema, oltre a uno snippet del codice che sta causando l'eccezione. –

+1

La tua risposta mi ha aiutato con il mio problema, l'unica cosa che rimane è controllare che abbia tutto a posto per farlo funzionare. Grazie. –

Problemi correlati