0

我正在从名为guildmembers的表中提取访问权限、guildid 名称

.

...和另一个名为玩家的表中的 id、level、playerclass

这是我的 SQL 语句:

选择 guildmembers.access、guildmembers.guildid、guildmembers.name、players.id、players.level、players.playerclass
来自公会成员、玩家
ORDER BY guildmembers.name, player.playerclass

这是返回的内容。

这就是我需要的。

任何想法如何做到这一点?

4

3 回答 3

3

你需要做的是一个join语句。目前您正在告诉 sql 只向您显示两个表中的所有结果。您只想在匹配的地方显示结果,为此您使用 join 语句。

SELECT guildmembers.access, guildmembers.guildid, guildmembers.name, players.id, players.level, players.playerclass
FROM guildmembers join players on guildmembers.pid=players.id
ORDER BY guildmembers.name, players.playerclass

guildmembers.pid并且players.id是两个表中的公共字段,因此您可以在这些表中加入表。

http://www.w3schools.com/sql/sql_join.asp

为了使这更容易理解和理解,在两个表中都有一个共同的字段名称。然后你可以用它来加入,它更有意义。

希望对您有所帮助。

于 2013-03-07T09:33:32.110 回答
1

您的 SQL 语句不正确,请尝试

SELECT guildmembers.access, guildmembers.guildid, guildmembers.name, players.id, 
players.level, players.playerclass from guildmembers left join players on guildmembers.pid = players.id order by guildmembers.name, players.playerclass
于 2013-03-07T09:36:18.550 回答
1
SELECT gm.access as access, gm.guildid as guildid, gm.name as name, 
p.id as id, p.level as level, p.playerclass as playerclass
FROM guildmembers gm LEFT JOIN players p on gm.pid=p.id
ORDER BY gm.name, p.playerclass
于 2013-03-07T09:40:56.567 回答