在数据库中,我有一些由客户租用的汽车。我想找到所有客户租用的汽车,并显示其PlateNr。换句话说,我想在MySql中进行SQL划分。 我的数据库是这样的:
客户
ID,Name
1 , John
2 , Scott
汽车
PlateNr,Colour
1111 , red
2222 , black
租金
ID , PlateNr , Date
1, 1111, 2010-01-01
1, 1111, 2010-02-01
2, 1111, 2010-03-02
2, 2222, 2010-01-02
按照一些说明,我有以下查询,但无法找到所有客户租用的汽车(正确的结果应为Platenr = 1111)。查询出了什么问题?
SELECT PlateNr
FROM rents as R1
WHERE NOT EXISTS
(SELECT car.PlateNr
FROM car
WHERE NOT EXISTS
(SELECT rents.PlateNr
FROM rents
WHERE rents.PlateNr=R1.PlateNr));
答案 0 :(得分:1)
我将此查询写为:
SELECT PlateNr
FROM Rents
GROUP BY PlateNr
HAVING COUNT(DISTINCT ID) = (SELECT COUNT(*) FROM Customer);
用简单的英文说,这是要查找所有其租赁客户的不同数量与客户总数相匹配的印版。我在这里假设ID
是Customers
表中的唯一列。
答案 1 :(得分:0)
通过此查询,您可以查看哪个客户租了哪辆车以及租了多少车,如果您可以提出其他问题,可以添加评论
Select Customer.Name,Car.PlateNr,count(*) as Count
from Customer inner join Rents On Rents.ID=Customer.ID
inner join Car On Car.PlateNr=Rents.PlateNr
group by Customer.Name,Car.PlateNr
having count(*)>1