2013-01-19 54 views
1
SELECT t.id_type, brand, model, countMod FROM types t 
    LEFT JOIN (
     SELECT p.id_type, brand, model, COUNT(model) AS countMod 
      FROM products p 
      GROUP BY brand) p2 
    ON t.id_type = p2.id_type 
    WHERE t.id_type = "TCE" 
    ORDER BY brand 

該查詢工作正常,但我失去了當然,在每個品牌下分組的模型。
有沒有辦法讓車型上市並統計?
I.e. brand1,model1,model2,model3,countMod = 3 - brand2,model1,model2,countMod = 2。
任何幫助將不勝感激。謝謝選擇與子選擇計數由於分組條款

回答

2
SELECT brand, GROUP_CONCAT(model) models, COUNT(model) AS countMod 
FROM products 
GROUP BY brand 
+0

不錯,短小而高效,謝謝 – michael

-1

推薦的方法是運行兩個查詢,一個用於數據,另一個用COUNT()

使用MySQL,您也可以使用SQL_CALC_FOUND_ROWS(主要是如果您有LIMIT子句),但是其性能有爭議,請參閱Which is fastest? SELECT SQL_CALC_FOUND_ROWS FROM `table`, or SELECT COUNT(*)

+0

這是一個答案? 這應該是一個評論 –

+0

@SashiKant我不明白爲什麼這應該是一個評論,因爲它直接解決了問題:「有沒有辦法讓模型列出和計數?」它的工作原理是 –

1

嘗試這種::

SELECT 
t.id_type, 
brand, 
GROUP_CONCAT(model SEPARATOR ',') as model, 
COUNT(model) AS countMod 
FROM types t 
LEFT JOIN products p ON t.id_type = p.id_type 
WHERE t.id_type = "TCE" 
GROUP BY brand 
ORDER BY brand 
+0

。謝謝 – michael