加入我在我的數據庫3個表梳理MySQL的外部在搜索
PROJECTS
- id
- name
- date_created
- user_created
- status (or for disabled, 1 for enabled)
PROJECTS_MANAGERS (a project may have 0 or more managers)
- id
- project_id
- manager_username
PROJECTS_MEMBERS (a project may have 0 or more members)
- id
- project_id
- member_username
我試圖創建一個MySQL連接查詢列出所有特定用戶參與其中的地位是項目等於1.具體來說,將列出用戶名「bob」位於「use_created」,「manager_username」或「member_username」字段以及projects.status字段爲1的所有項目的查詢。但是,成爲多個經理或成員具有相同的project_id(當然不同的ids和member_usernames)。
我試過這段代碼,但它似乎沒有工作(給我錯誤'1054未知列'projects.status'在where子句中)。我試圖做一個「全面加入」但我是來學習MySQL不支持這一點:
SELECT *
FROM
`projects` as theProjects
LEFT OUTER JOIN
projects_managers
AS theManagers
ON theProjects.id = theManagers.project_id
WHERE
projects.status = 1
UNION ALL
SELECT *
FROM
`projects` as theProjects
RIGHT OUTER JOIN
projects_members
AS theMembers
ON theProjects.id = theMembers.project_id
WHERE
projects.status = 1
任何幫助將不勝感激。
相反ALL做UNION的,你能不能將二者結合起來select語句成一個,然後添加「(AND user_created = '鮑勃' OR manager_username = '鮑勃' OR member_username =' bob')?不知道這是你在找什麼... – Melanie
我沒有你的問題的答案,但我可以建議改變數據庫模型(如果可能的話)只使用一個表的經理和他們都是似乎基本上以相同的方式工作的人(沒有雙關語意圖;-) –
那麼在某些屏幕上,數據庫需要查詢以查看用戶登錄是否是經理或成員,允許某些功能 – mrc0der