PHP SQL连接关系

时间:2011-04-13 11:58:25

标签: php sql join kohana

  

可能重复:
  Self referencing relation with followers|friends users

你好。

我有两个名为usersusers_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这样做了吗?

5 个答案:

答案 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;