(下面的例子是假设的,但说明了这个概念)。
使用MySQL,假设我有2个表:
userFromID userToId moreInfo
1 2 cat
1 3 dog
4 1 bear
3 4 fish
和...
userId someInfo addlInfo
1 m 32
2 f 33
3 m 25
4 f 28
我想查询用户ID,并从两个表中获取与user1共享关系的所有用户的联合信息。
假设第一个表格类似于alter table thatFirstTable add unique index(userFromId, userToId)
,因此不会有任何重复 - 两个ID之间的每个关系都是唯一的。
谁是“从”或“到”
并不重要所以如果查询与用户id:1
的关系,那么期望的结果将是这样的userId moreInfo someInfo addlInfo
2 cat f 33
3 dog m 25
4 bear f 28
感谢。
/编辑这个“有效”,但我怀疑有更好的方法吗?
SELECT * FROM users JOIN friends ON friends.userFrom = users.id OR friends.userTo = users.id WHERE users.id != 1 AND friends.userFrom = 1 OR friends.userTo = 1
/ EDIT2 - 我更新了示例输出以更好地反映目标
答案 0 :(得分:0)
尝试此查询::
select tbl2.userid,tbl1.moreinfo,
tbl2.someinfo,tbl2.addinfo
from tbl1 join tbl2
on (tbl1.usertoid = tbl2.userid and tbl1.userfromid = 1)
答案 1 :(得分:0)
您应该只使用下面的查询加入表格。
select u.userId, f.moreInfo, u.someInfo, u.addlInfo
from users AS u INNER JOIN friends AS f ON u.userId = f.UserToId
where f.userFrom = 1
答案 2 :(得分:0)
试试这个。经过测试和100%工作
select a.userToID, a.moreInfo, b.someInfo, b.addInfo from tbl1 a
left outer join
tbl2 b on a.userToID = b.userId
where a.userFromID = 1;