我有一个查询(其中包括)寻找可以在某一天进行轮班的人.
SELECT secud_id, secud_fname, secud_sname, user_id, user_owner, user_level, shift_start, GROUP_CONCAT(DISTINCT uq_name SEPARATOR ' ') quals
FROM user_data
INNER JOIN users ON user_data.secud_ulink = users.user_id
LEFT JOIN user_quals ON users.user_id = user_quals.uq_user
LEFT JOIN shifts ON shifts.shift_user = users.user_id
WHERE users.user_owner = 2
AND users.user_level= 'Personnel'
AND (date(shifts.shift_start) <> '2016-03-16' OR date(shifts.shift_start) IS NULL)
AND users.user_active = 1
GROUP BY users.user_id
ORDER BY secud_sname ASC
Run Code Online (Sandbox Code Playgroud)
为了解释结构,用户是用户主表,user_quals持有各种证书等(对于该用户可能是空的,或者有许多条目),user_data为用户保存各种信息并且轮班保存班次日期和时间,地点等(也可能有很多或没有).
我主要得到的是我想要的东西 - 具有属于特定组织(user_owner)的资格的活跃用户列表,其user_level为Personnel,在该日期没有转移,但是如果他们是发现在另一个日期有转变当然符合WHERE条款.如果他们在那个日期有转变,即使它们可能在其他行中返回,我也不希望它们出现.
任何指导都非常感谢.
mysql ×1