2013-08-06 50 views
6

Tôi có 3 Bàn có khóa ngoài với nhau. Tôi muốn viết một thủ tục lưu trữ SQL Server để chọn các bản ghi từ một trong số chúng.Chọn Truy vấn từ 3 bảng có khóa ngoài

My tables

Bây giờ, chúng ta hãy giả sử rằng tôi muốn tất cả các hồ sơ Winner đề cập đến các hồ sơ Người Chơi cập đến The Game với ID = 2, làm thế nào tôi có thể tiến hành?

Cảm ơn bạn.

+2

Bạn sẽ áp dụng một INNER JOIN với một mệnh đề where lọc; http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html –

Trả lời

6

bạn đã xác định tất cả các hồ sơ Winner Vì vậy mà tôi đã sử dụng trái tham gia cho người chơi và trò chơi. Nhưng các mã tổng thể hoạt động theo điều kiện nơi.

Hãy thử này,

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

hoạt động quá tôi vừa thử và tất cả đều tốt. Cảm ơn bạn! –

+0

bạn được chào đón nhờ bình luận của bạn. – Selva

+0

@Selva bạn có thể vui lòng cho tôi biết cách thực hiện cùng thao tác trên với Nhóm Bằng cách chọn tất cả bản ghi người chiến thắng mới nhất cho tất cả Trò chơi. – Avi

2

Bạn cần sử dụng SELECTINNER JOIN sau đó để lọc trên GameID 2, bạn có thể sử dụng mệnh đề 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

khi tôi thực hiện điều đó trong phương thức của mình, trả về danh sách (lớp dành cho bản ghi người chiến thắng) gọi là thủ tục lưu sẵn) tôi nhận được: System.IndexOutOfRangeException: ID_player –

+0

@SlimaneAgouram - đây là một câu hỏi khác. Bạn nên chấp nhận một câu trả lời ở đây (nếu nó đã giúp bạn với vấn đề ban đầu) và sau đó đăng một câu hỏi mới với các chi tiết của vấn đề của bạn, cũng như một đoạn mã gây ra Ngoại lệ. –

+1

Câu trả lời của bạn đã giúp tôi giải quyết vấn đề của mình, chỉ còn lại một điều là kiểm tra xem tôi có sẵn mọi thứ để làm cho nó hoạt động không. Cảm ơn bạn. –

Các vấn đề liên quan