我有一张关于租车公司的表格,其中有等列
Firms | Car
GD1 | CAR1
GD1 | CAR2
GD2 | CAR3
GD3 | CAR4
还有另一个客户租的车,比如这样:
Client | Car Rented
C1 | CAR1
C1 | CAR2
C1 | CAR3
C1 | CAR4
C2 | CAR4
C3 | CAR1
C3 | CAR2
C4 | CAR1
C5 | CAR2
我需要了解所有从特定公司租赁所有汽车的客户。我唯一的输入是公司名称(例如GD1)如果我使用GD1,输出应该是这样的:
Client
C1
C3
这看起来可能很容易,但我真的很难处理这个。。。
感谢
要了解客户是否从特定公司租赁所有汽车,您需要了解该公司拥有多少辆汽车,以及客户从该公司租赁了多少辆汽车。要了解该公司拥有多少辆汽车,您可以通过以下查询获得:
SELECT Firms, COUNT(*) AS NUM_OF_CAR
FROM FirmTable
GROUP BY Firms
要知道客户从公司租了多少辆车,你可以通过以下查询获得:
SELECT Client, Firms, COUNT(*) AS NUM_OF_CAR
FROM FirmTable a
INNER JOIN ClientTable b ON a.Car = b.Car
GROUP BY Client, Firms
现在,您需要获得租用所有汽车的客户端,这意味着第一个查询和第二个查询中的NUM_OF_car必须与相应的公司相匹配。结合以上两个查询,您可以使用:
SELECT DISTINCT Client
FROM (
SELECT Firms, COUNT(*) AS NUM_OF_CAR
FROM FirmTable
GROUP BY Firms
) t
INNER JOIN (
SELECT Client, Firms, COUNT(*) AS NUM_OF_CAR
FROM FirmTable a
INNER JOIN ClientTable b ON a.Car = b.Car
GROUP BY Client, Firms
) u
ON t.Firms = u.Firms AND t.NUM_OF_CAR = u.NUM_OF_CAR
WHERE t.Firms = 'GD1'
我也是mysql的新手,但您可以尝试一下。
SELECT DISTINCT Client from ClientTable where CarRented=(SELECT Car from FirmTable where Firms='GD1');