SQL存储过程 - 三个表中的列?

时间:2014-05-10 01:02:52

标签: sql stored-procedures

我有三张桌子:

videogames.cod - playerid (PK), forename, surname, points
videogames.codhost - hostid (PK), playerid (FK), gameid (FK), wins (integer), losses (integer)
videogames.codgame - gameid (PK), gametype (extinction, deathmatch) 

我创建了一个存储过程,它返回玩家根据姓氏得分的分数。

CREATE PROCEDURE getpoints @surname nvarchar(30)
AS
SELECT forename, surname, points
FROM videogames.cod
WHERE surname = @surname
GO

问题是我还想要来自其他两个表的数据。我需要来自codhost表的胜利和损失,它们都是整数,我想要来自codgame表的游戏类型,即

姓氏,姓氏,分数,胜利,损失,游戏类型。

我知道我需要加入,但我不知道如何加入表格,因为他们不会共享相同的密钥。是的,我知道我可以更改表格中的字段,但我更愿意学习如何为将来的参考文件做这些事情,当我使用我理解的东西时,对我来说更有意义 - 例如游戏。我知道它是愚蠢的,但这是我学习的方式。

1 个答案:

答案 0 :(得分:0)

尝试这个,它不在我的头顶,所以如果它不起作用,我会验证和修改:

CREATE PROCEDURE getpoints @surname nvarchar(30)
AS
SELECT c.forename, c.surname, c.points, h.wins, h.losses, g.gametype
FROM videogames.cod c
left join videogames.codhost h on c.playerid = h.playerid
left join videogames.codgame g on h.gameid = g.gameid
WHERE c.surname = @surname
GO