可能重复:
Self referencing relation with followers|friends users
你好。
我有两个名为users
和users_friends
的表。
用户:
id INT
username VARCHAR
.....
users_friends:
user_id INT
friend_id INT
PRIMARY KEY (`user_id`,`friend_id`)
如何获取有关特定用户朋友的信息?假设我想列出与id
5
INNER JOIN
用户关联的朋友。
无法让我的联接工作,我尝试的一切都没有结果。有任何想法吗?这应该是我简单查询的两个{{1}}我认为但无法管理。
然后第二个问题是如何使用Kohana 3.1 ORM构建它?也许我不应该?
编辑:任何人都对使用Kohana 3 ORM这样做了吗?答案 0 :(得分:2)
这样的事情:
select users.*
from users
inner join users_friends on users_friends.friend_id = users.user_id
where users_friends.user_id = 5
答案 1 :(得分:1)
SELECT *
FROM `users` AS u
INNER JOIN `users_friends` AS uf ON u.id = uf.user_id
WHERE u.id = '5'
这是INNER JOIN
如果所有信息都存储在用户中,则需要再次加入users
SELECT ufu.*
FROM `users` AS u
INNER JOIN `users_friends` AS uf ON u.id = uf.user_id
INNER JOIN `users` AS ufu ON uf.friend_id = ufu.user_ud
WHERE u.id = '5'
答案 2 :(得分:1)
当然可以使用JOIN,但这不会比简单的查询更快:
SELECT *
FROM users
WHERE id IN (
SELECT friendID FROM user_friends WHERE userID=5
)
但是,这只列出了来自用户5的朋友。如果你想要反过来,那么列出那些说用户5是朋友的人,这个查询也更容易改变。
SELECT *
FROM users
WHERE id IN (
SELECT userID FROM user_friends WHERE friendID=5
)
答案 3 :(得分:0)
不是一件简单的事:
Select friend_id from users_friends where user_id = 5
5
是用户ID。
答案 4 :(得分:0)
脱离我的头顶:
SELECT friend_id, username
FROM users_friends JOIN users
ON users_friends.friend_id = users.id
WHERE user_id = 5;