mysql - 有没有办法用一个查询来做到这一点?

标签 mysql sql join

我有这些表:

home_table
----------
home_id | home_name

user_table
---------
user_id | user_name

user_home_rel_table
----------
id | user_id | home_id

(很多用户可能属于很多家)

我有一个名为/homes/2/users 的 API 调用,我想返回 ID 为 2 的所有家庭用户。

与调用一起,是当前用户的用户 ID。

如果用户属于家庭(在本例中为 id 2),则允许他查看其他用户。如果用户存在于 user_home_rel_table 中,则该用户属于该家庭:

user_home_rel_table
----------
id | user_id    | home_id
----------------------
1  | $currentID | 2

最佳答案

我相信这会给你想要的东西。我将 $currentid$home_id 作为参数的占位符。我还为表使用了略有不同的名称,因为我拒绝使用在末尾附加 _table 的表名...;)

SELECT
    U.user_id,
    U.user_name
FROM
    User_Homes UH
INNER JOIN User_Homes UH2 ON UH2.home_id = UH.home_id
INNER JOIN Users U ON U.user_id = UH2.user_id
WHERE
    UH.user_id = $currentid AND
    UH.home_id = $home_id  -- 2

关于mysql - 有没有办法用一个查询来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610896/

相关文章:

php - 如何使用 PHP 为每个注册用户提供自己的 url?

sql - 使用 Oracle/SQL group by 查找最大值

mysql - 在单行mysql中显示重复行

php - mysql数据库按列搜索

mysql - 根据条件 CASE 返回单个值

mysql - 通过id获取最多的计数

mysql - 每个选定列的不同Where子句

mysql - 连接两个表

mysql - SQL,如何使用GROUP BY删除重复数据

sql - 在 SQL 中建模国家/地区邻接关系