我有2张桌子的时间表
//output should be like this
id name
2 alex //he have schedule at 15, 23
4 john //he don't have any schedule
id 1 - ben希望将他的日程安排与其他人交换。
我需要SELECT FROM FROM FROM JOIN schedule和GROUP BY name
比我需要的那些用户名在2016-5-22没有任何时间表
SELECT name FROM user LEFT JOIN schedule ON user.id = schedule.id
WHERE year = 2016 && month = 5 && date != 22
比利和本在22岁的时间表,所以他们不会出现
我尝试写类似
的东西uitextfield
但是这个查询仍会出现在比利,因为比利在2016-5-30有一行
是否有人可以帮助我解决此问题
答案 0 :(得分:1)
您需要过滤组而不是行才能使查询正常工作。简单指南WHERE代表组的行
SELECT name FROM user LEFT JOIN schedule ON user.id = schedule.id
GROUP BY name
HAVING SUM(year = 2016)>0
AND SUM(month = 5)>0
AND SUM(date=22)=0
或更简单
...HAVING SUM(CONCAT(year,month,date)='2016522')=0
答案 1 :(得分:1)
以下查询将为您提供未安排在2016-5-22上工作的所有名称。
SELECT A.NAME FROM USER A
WHERE A.ID NOT IN(
SELECT A.ID FROM USER A, SCHEDULE B
WHERE (A.ID=B.ID)
AND B.YEAR=2016 AND B.MONTH=5 AND B.DATE=22
)