基本上,我有一個包含員工信息表:SQL加盟只使用一個表中的兩個不同的查詢
frs_Employee
我的最終結果應該是返回查詢經理人的名字(沒有'mngnin'的人,即前12名員工),以及他們管理的員工的姓名。
我已經想通了如何返回員工的拼接列表:
SELECT (SELECT GROUP_CONCAT(empname) AS employees)
FROM frs_Employee
WHERE `mgrnin` <> ''
GROUP BY `mgrnin`
問題在於管理者(NIN001)的一個不管理的僱員。因此,當我使用GROUP BY時,我的行數少於我應該的數量。
我要麼需要得到GROUP BY以某種方式得到的空字段,以及 - 我嘗試使用別名,如:
(SELECT `empnin` FROM frs_Employee WHERE `mgrnin` = '') AS `myAlias`
但是這本身就是一個整體頭痛。
我也嘗試使用JOIN(這是我如何懷疑這個問題已經解決了),但是我無法在腦海中圍繞它。我也想過使用臨時表,但我不確定要完成這個工作。
對於一個好的通用解決方案的任何想法?
這種關係只有父母 - >孩子,或者可以有祖父母 - >父母 - >孩子等等? –
@JorgeCampos描述看起來像只有那些與空是經理 –
是的,我明白了。我問,因爲新人不考慮關係的深度是一個常見的錯誤。這只是確定的。在一個級別內,一個普通的左連接解決了這個問題,但是如果它更像一個像'John管理彼得管理Phill'一樣的mysql,它並不是那麼微不足道。 –