簡體   English   中英

MySQL多條件一列子查詢

[英]Mysql multiple condition one column subquery

我有一張桌子,上面有租車的公司,列有

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM