我有一张桌子,上面有租车的公司,有像
这样的栏目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
这看似简单,但我真的遇到了这个问题......
感谢您的时间
答案 0 :(得分:1)
要了解客户是否从特定公司租车,您需要知道公司拥有多少辆汽车以及客户从公司租用的汽车数量。 要知道公司拥有多少辆汽车,您可以通过以下查询获得:
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'
答案 1 :(得分:0)
我也是mysql的新手,但你可以尝试一下。
SELECT DISTINCT Client from ClientTable where CarRented=(SELECT Car from FirmTable where Firms='GD1');