SQL Division Operator和Mysql中的实现

时间:2018-11-14 07:17:55

标签: mysql

在数据库中,我有一些由客户租用的汽车。我想找到所有客户租用的汽车,并显示其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));

2 个答案:

答案 0 :(得分:1)

我将此查询写为:

SELECT PlateNr
FROM Rents
GROUP BY PlateNr
HAVING COUNT(DISTINCT ID) = (SELECT COUNT(*) FROM Customer);

用简单的英文说,这是要查找所有其租赁客户的不同数量与客户总数相匹配的印版。我在这里假设IDCustomers表中的唯一列。

答案 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