Mysql多条件一列子查询

时间:2015-11-26 01:08:06

标签: 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

这看似简单,但我真的遇到了这个问题......

感谢您的时间

2 个答案:

答案 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');
相关问题