【发布时间】:2016-02-29 19:21:46
【问题描述】:
我有以下表格:
员工 (empid,name,age)
预订 (bookingid,empid,cid)
汽车(cid、名称、类型)。
内容是这样的:
员工:
- emp1,A,32
- emp2 , B , 36
- emp3,C,25
- emp4 , D , 40
- emp5 , E , 45
预订:
- 1 , emp1, car1
- 2,emp1,car3
- 3 , emp1 , car2
- 4,emp2,car2
- 5,emp3,car3
- 6, emp4, car1
- 7,emp4,car2
- 8,emp5,car3
- 9, emp5, car2
- 10 , emp5 , car1
汽车:
- car1,一,红
- car2,二,蓝色
- car3,三,红
这是我的问题:返回所有预订了非红色汽车的员工姓名的查询是什么?
已编辑:
我第一次应该更具体地回答我的问题。
这个链接
How can I join two tables but only return rows that don't match?
它是关于比较来自不同表的相同字段。帖子清楚地表明用户需要比较两个表中的行并返回不匹配的行。
但这不是我的情况。正如我的标题所示,我想知道是否可以比较通过执行查询返回的行。
我想获得至少没有预订一辆红色汽车的员工的姓名。
考虑到表中的值,
员工 1 和 5 已预订所有汽车。
员工 3 只预订了一辆红色汽车,并且
员工 4 预订了一辆红色和一辆绿色汽车。
员工 2 预订了一辆绿色汽车。
现在,只返回员工 2 的姓名的查询是我的问题。(我知道我可以通过在 where 子句中指定 type='Green' 来做到这一点,但是当有两个以上时会失败颜色。)
【问题讨论】:
-
您应该在网上提问之前尝试解决这个问题。如果你不能解决这个问题,你可以尝试让所有预订红色汽车的员工,看看这是否能给你任何想法。
-
欢迎来到 SO。分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见How to Ask。记住 SO 不是免费的代码服务!
-
@GordonLinoff 谢谢你的建议。但是我尝试了很多查询,但我最终得到了相同的结果,但仍然没有给我所有没有预订红色汽车的人的名字。我想知道这到底是怎么可能的。如果有任何与我所问的类似的东西,我很乐意去看看:)
标签: mysql sql subquery correlated-subquery nested-query