Mysql多条件一列子查询



我有一张关于租车公司的表格,其中有等列

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');

最新更新