sql连接查询问题
我做了一个朋友列表,连接2个表格,FRIENDS表格和PLAYERS表格。sql连接查询问题
朋友表
player target status
-----------------------------
john eric invited
roger moore friends
stan winston friends
球员表
name pic
-------------------
john lol.jpg
stan skinhead.gif
现在的球员页面上的时候,我需要遍历friends
表,并找出他们有几个朋友。所以为此我必须检查两个player
字段,以及target
字段,即= $ name
然后获取图片ID必须加入players
表。
这是迄今为止我的查询,它不工作明显(伪位):
SELECT p.pic, p.name FROM friends f INNER JOIN players p ON (player OR target)=p.name WHERE (f.player='" .$name. "' OR f.target='" .$name. "') AND status='friends'
$ name是玩家的设定档名称上。
任何人都可以告诉我如何调整,使其工作?
您需要使用联合才能在一个查询中获取全部内容。
SELECT * FROM friends JOIN players ON (target = name AND status = friends)
WHERE player = ?
UNION ALL
SELECT * FROM friends JOIN players ON (player = name AND status = friends)
WHERE target = ?
当然,你应该使用某种独特的ID来识别人,而不是他们的名字。 – 2012-08-05 11:27:44
SELECT p.pic, p.name FROM friends f INNER JOIN players p ON f.name=p.name WHERE (f.player='" .$name. "' OR f.target='" .$name. "') AND status='friends
“
朋友= f.player 在查询?
没有f.name字段 – user1022585 2012-08-05 11:22:36
正确thx纠正 – Tom 2012-08-05 13:50:17
试试这个:
SELECT p.pic,
p.name
FROM friends f
INNER JOIN players p ON p.name IN (f.player, f.target)
WHERE (f.player='" .$name. "' OR f.target='" .$name. "')
AND status='friends'
这是
SELECT p.pic,
p.name
FROM friends f
INNER JOIN players p ON p.name = f.player OR p.name = f.target
WHERE (f.player='" .$name. "' OR f.target='" .$name. "')
AND status='friends'
您能具体解释您的查询字词部分不工作,你会得到什么错误/不正确的结果速记? – 2012-08-05 11:18:59
这将更接近: SELECT p.pic,p.name FROM friends f INNER JOIN players p ON friends.player = p.name WHERE(f.player ='“。$ name。”'or f.target = ''。$ name。'')AND status ='朋友' – 2012-08-05 11:19:37
它与JOIN,IIVE在伪造atm中完成。它可以是f.player或我需要加入的f.target。 – user1022585 2012-08-05 11:19:39