2014-03-06 77 views
0

我已經在這裏開始了一個SQL小提琴: http://sqlfiddle.com/#!2/26c26/7MySQL查詢從多個表計數

您可以查看示例表和看到我已經在三個表有多種車型。我試圖獲得6列布局。前兩列將是JeepMart1車型,以及這些車型的計數,接下來的兩列是JeepMart2車型,最後兩列是JeepMart3車型和數量。

從小提琴表此查詢的結果會是什麼樣子:

Jeep1Models | Jeep1Counts | Jeep2Models | Jeep2Counts | Jeep3Models | Jeep3Counts | 
Wrangler   3   Wrangler   1 
Grand Cherokee 2   Grand Cherokee 3   
          Patriot   1   Patriot   5 

的想法是讓每個JeepMart每個模型的計數。

如果這是可能的話,這將是在上面的櫻桃得到這樣每個模型的總和:(縮短可讀性山坳名)

Jeep1Mod | Jeep1Cou | Jeep2Mod | Jeep2Cou | Jeep3Mod | Jeep3Cou | Totals 
Wrangler  3  Wrangler  1        4 
Grand Cher  2  Grand Cher  3        5 
         Patriot  1  Patriot  5   6 

我要查詢這個數據完全開放換句話說,即使這意味着改變結果的佈局,只要所有結果都在那裏,並且同樣容易使用。

回答

1

要COUNT(DISTINCT VIN)像下面

SELECT J1.model as Jeep1Model, 
     COUNT(DISTINCT J1.vin) as Jeep1Counts, 
     J2.model as Jeep2Model, 
     COUNT(DISTINCT J2.vin) as Jeep2Counts, 
     J3.model as Jeep3Model, 
     COUNT(DISTINCT J3.vin) as Jeep3Counts, 
     COUNT(DISTINCT J1.vin)+ 
     COUNT(DISTINCT J2.vin)+ 
     COUNT(DISTINCT J3.vin) as Total 
FROM 
(SELECT DISTINCT model FROM JeepMart1 
UNION SELECT DISTINCT model FROM JeepMart2 
UNION SELECT DISTINCT model FROM JeepMart3)A 
LEFT JOIN JeepMart1 J1 ON J1.model = A.model 
LEFT JOIN JeepMart2 J2 ON J2.model = A.model 
LEFT JOIN JeepMart3 J3 ON J3.model = A.model 
GROUP BY A.model 

sqlFiddle

+0

太好了!這就像一個冠軍。 –