這裏有一些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