我有两个表,我试图用相同的列查询

时间:2015-02-28 15:22:19

标签: sql

我有两个表,playerfriend。我正在尝试查询来自它们的信息以检索项目

player_id (friend), 
friend_id (friend), 
nickname (player), 
FriendsNickname (Dynamic), 
relation (friend)

我创建了这个SQL查询以尝试检索项目,但是我失败了。

SELECT 
   friend.player_id,
   friend.friend_id,
   player.nickname, 
   (SELECT distinct player.nickname 
    FROM player, friend 
    WHERE player.player_id = friend.friend_id) as FriendName,
   friend.relation,
FROM 
   friend, player

但它会返回正确的ID,昵称但不是正确的朋友名

"76561199766508009" "76561200657240053" "RedReaper" "CallumC"   "3" "NULL"
"76561199766508009" "76561200657240053" "CallumC"   "CallumC"   "3" "NULL"
"76561199766508009" "76561200657240053" "CrotchMan" "CallumC"   "3" "NULL"
"76561199766508009" "76561200657240053" "Callum Carmicheal" "CallumC"   "3" "NULL"
"76561199766508009" "76561200657240053" "ReconTheCat"   "CallumC"   "3" "NULL"
"76561199766508009" "76561200657240053" "redreaper" "CallumC"   "3" "NULL"
"76561200657240053" "76561199766508009" "RedReaper" "CallumC"   "3" "NULL"
"76561200657240053" "76561199766508009" "CallumC"   "CallumC"   "3" "NULL"
"76561200657240053" "76561199766508009" "CrotchMan" "CallumC"   "3" "NULL"

SQL应该从玩家表中返回值玩家ID,朋友ID,昵称,并使用给定的信息生成朋友姓名(这样做,但每次只返回相同的名称),关系。

2 个答案:

答案 0 :(得分:1)

如果我理解正确你正在寻找这个

SELECT 
   f.player_id,
   f.friend_id,
   p.nickname,
   f.nickname as friendname, 
   f.relation,
FROM 
   friend f
 inner join  player p on p.player_id = f.friend_id

答案 1 :(得分:0)

内部联接答案应该是正确的,但您也可以通过在WHERE子句中移动子查询并在那里执行旧样式连接来使用“旧样式”语法:

SELECT
   f.player_id,
   f.friend_id,
   p.nickname,
   f.nickname,
   f.relation,
FROM friend f, player p
WHERE f.friend_id = p.player_id