此查詢產生正確的答案:結合這兩個MySQL查詢
SELECT users.*,
SUM(overtime_list.shift_length) AS overtime_total,
(SELECT GROUP_CONCAT(users_roles.role_ID) FROM users_roles WHERE users.user_ID = users_roles.user_ID) AS roles
FROM availability_list
INNER JOIN users
ON users.user_ID = availability_list.user_ID
INNER JOIN stations
ON users.station_ID = stations.station_ID
INNER JOIN overtime_list
ON overtime_list.user_ID = users.user_ID
AND overtime_list.date >= '$totalovertimedays'
WHERE availability_list.date = '$date'
AND availability_list.type = '$type'
GROUP BY users.user_ID
ORDER BY overtime_total ASC
輸出:
+----------+---------+----------------------------+------------------+
| user_ID | user | roles | overtime_total |
+----------+---------+----------------------------+------------------+
| 1 | Smith | 1,2 | 12 |
+----------+---------+----------------------------+------------------+
| 2 | Jones | 1,2,3 | 7 |
+----------+---------+----------------------------+------------------+
這是所期望的結果:
+----------+---------+----------------------------+------------------+
| user_ID | user | roles | overtime_total |
+----------+---------+----------------------------+------------------+
| 1 | Smith | Admin, Staff | 12 |
+----------+---------+----------------------------+------------------+
| 2 | Jones | Admin, Staff, Other | 7 |
+----------+---------+----------------------------+------------------+
這是我可以使用的連接,它似乎允許group_concat更正連接「admin,staff,other」 - 但我無法解決如何將它合併到上面的主查詢中?
SELECT users.user_id, GROUP_CONCAT(roles.short_name separator ', ') roles
FROM users
JOIN users_roles ON users.user_ID = users_roles.user_ID
JOIN roles ON users_roles.role_ID= users_roles.role_ID
GROUP BY users.user_ID
的users_roles表:
+----------+---------+
| user_ID | role_ID |
+----------+---------+
| 1 | 1 |
+----------+---------+
| 2 | 1 |
+----------+---------+
| 2 | 2 |
+----------+---------+
| 2 | 3 |
+----------+---------+
| 1 | 3 |
+----------+---------+
角色表:
+----------+------------+
| role_ID | short_name |
+----------+------------+
| 1 | Admin |
+----------+------------+
| 2 | Super |
+----------+------------+
| 3 | Other |
+----------+------------+
嗨馬可 - 它不工作? 「on子句'」中的未知列'user_roles.role_ID'?上面的答案「確實有效」,但由於某種原因,這確實很慢 - 我試圖讓你的工作... – Laurence 2012-04-10 11:02:47
@Laurencei將其更改爲users_roles.role_id。 – 2012-04-10 11:32:06
是的!!!!!!!!!!!!!!!!!!謝謝你們倆!!!!!!!!!!!!!!!!!!!!!!!! +代表如果我能!!!!!!!!!!!!!讓我非常頭痛! – Laurence 2012-04-10 11:51:52