[英]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.