这里有一些SQL表:问题与多个表MySQL查询JOIN
表USERS
id
1
表PROJECTS
id
1
个表位置
id
1
2
表USERS_x_PROJECTS
id id_USER id_PROJECT
1 1 1
表USERS_x_LOCATIONS
id id_USER id_LOCATION
1 1 1
个
表PROJECTS_x_LOCATIONS
id id_PROJECT id_LOCATION
1 1 1
2 1 2
用户被链接到项目。用户和项目之间的链接存储在USERS_x_PROJECTS中。
用户和项目可以链接到位置。链接分别存储在USERS_x_LOCATIONS和PROJECTS_x_LOCATIONS中。
现在让我们说我是用户#1。我想要做的是获取所有项目的位置,其中没有一个项目的位置与我的位置匹配。
预期结果: 上面的例子中,预期的结果是获得一个空数组,因为无论是用户和数据库中的唯一项目被链接到该位置1#。
实际结果: 我拿到项目#1
我想什么:
SELECT
p.id id,
GROUP_CONCAT(DISTINCT l.id SEPARATOR "#") l_ids
FROM
PROJECTS p
LEFT JOIN
PROJECTS_x_LOCATIONS pl ON pl.id_PROJECT = p.id
LEFT JOIN
LOCATIONS l ON l.id = pl.id_LOCATION
WHERE
l.id != 1
GROUP BY
p.id
感谢您的帮助!
谢谢你的回答 – user3006522