我有一個存儲用戶組的「group_names」表。每個小組都有一個經理,可以是個人用戶,也可以由其他小組管理。這當前由group_names.mgr_type確定。 INT值爲1表示它是個人用戶,值爲2表示它是一個管理它的組。MySQL在IF語句內選擇
例如,「一般用戶」組可由「IT部門」組或「John Doe」管理。 users和group_names表上的唯一ID字段是「user_id」和「group_id」。
我想從PHP中取出邏輯並將其放入SQL查詢中,但我遇到了問題。我不確定這是可能的,因爲表格佈局或者我只是不能遵循文檔中提供的簡單說明。
SELECT gn.group_id, gn.group_name, ... gn.mgr_id, CONCAT(usr.user_firstname,' ',usr.user_lastname) AS created_name, usr.user_id,
CASE gn.mgr_type
WHEN '1' THEN CONCAT(usr.user_firstname,' ',usr.user_lastname) WHERE usr.user_id=gn.mgr_id LIMIT 1
WHEN '2' THEN gn.group_name WHERE gn.group_id=gn.mgr_id LIMIT 1
END AS mgr_name
FROM group_names gn
LEFT JOIN users usr
ON gn.created_by=usr.user_id
ORDER BY group_name ASC;
我試過IF和CASE,有和沒有括號的不同變化,但不斷收到「無效語法」錯誤。
...for the right syntax to use near 'WHERE usr.user_id=gn.mgr_id LIMIT 1) WHEN '2' THEN (gn.group_name WHERE gn' at line 3
可我甚至選擇同一表中的不同行(選擇一個不同的行基礎上,mgr_id = GROUP_ID的組名),或者我應該添加另一個表? 有關更簡單/更有效的方法來提供任何建議嗎?
謝謝!
感謝您的快速回復,此解決方案似乎工作得最好。 – Curtis