此查询产生正确的答案:结合这两个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