我有一个多对多关系表:
表关系
:
relationship_id,
first_user REFERENCES users(user_id),
second_user REFERENCES users(user_id),
表用户
:
user_id,
other user information
要读取给定用户的 friend (可以在 first_user
或 second_user
中),我需要连接两个表(relationships
和users
), 但表 relationships
的两列是 FK
问题 1:如何 JOIN 两个表以使用两个 FK?
我有一个与表relationships
类似的未决请求表。批准请求后,它将从 requests
中删除并插入到 relationships
中。
问题 2:如何 JOIN 三个表以在一个查询中检索连接和挂起的请求。
你必须给“users”表的实例起别名,这样你就可以分别引用它们:
SELECT u1.*, u2.* FROM relationship r
JOIN users u1 ON (u1.user_id = r.first_user)
JOIN users u2 ON (u2.user_id = r.second_user)
要从请求和关系中进行选择,您可以使用 UNION :
SELECT u1.*, u2.* FROM relationship r
JOIN users u1 ON (u1.user_id = r.first_user)
JOIN users u2 ON (u2.user_id = r.second_user)
UNION
SELECT u1.*, u2.* FROM requests r
JOIN users u1 ON (u1.user_id = r.first_user)
JOIN users u2 ON (u2.user_id = r.second_user)
我是一名优秀的程序员,十分优秀!