我已經嘗試了數個小時才能看到它。我對mysql仍然很陌生,但在使用我發現的資源和示例之後,我設法實現了令人印象深刻的查詢。我有點卡在這裏。道歉,如果我沒有問得很好。被用於一個項目中管理類和類成員JOIN三個表不是很需要的生產成果
三個表。
table a = project membership
id user_id project_id
== ======= ==========
1 1 10
2 1 12
3 3 45
4 5 12
table b = categories
id name project_id
== ==== ==========
1 cat1 10
2 cat4 12
3 cat8 45
tabke c = category members
id user_id_added category_id capability
== ============= =========== ==========
1 1 2 1
2 3 3 2
3 5 3 1
4 5 2 0
Required result
members of project 2
user_id category capability_in_category
======= ======== ======================
1 2 1
5 2 0
SELECT a.user_id
, c.capability
, b.id as category
FROM a
LEFT OUTER JOIN b
ON a.project_id = c.project_id
LEFT OUTER JOIN c
ON b.id = c.category_id
WHERE a.project_id = $project_id
AND c.category_id = $category_id;
這種感覺就像我並不需要加入三個表,但我沒有看到與類別成員表加入該項目表的方式,而不使用類別表(B)。我正在運行的查詢幾乎可行,但用戶功能無法正確返回。我使用左外連接作爲成員可能並不總是屬於類別的一部分,但仍然需要在項目中顯示爲成員。我一直在嘗試各種連接和子查詢,但沒有成功。我基本上需要項目中的成員名單,並且如果他們是某個類別的一部分,則要顯示他們對特定類別的能力。我覺得可能有幾種方法可以做到這一點,但我正在努力彌合的灰色地帶。
見https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry