2014-06-19 40 views
2

我有這2個表:MySQL的計數出現

Category: 
cat_id|cat_type 
    1 | a 
    2 | b 
    3 | c 
    4 | d 

,並有

Meta: 
met_id|met_name|user_id|met_type 
    10 | bla | 2 | 1 
    11 | blabla | 4 | 2 
    12 | foo | 1 | 3 
    13 | blafoo | 3 | 4 
    14 | foofoo | 5 | 4 

我怎麼能回到這樣的事情?

cat_type|occurences 
    a |  1 
    b |  1 
    c |  1 
    d |  2 

met_type是來自Category的外鍵。

+2

這只是一個簡單的'INNER JOIN'(或者,如果你想要得到的0計數,太'左JOIN')。請顯示你的嘗試,我們會幫你修復它,不要成爲一個幫助吸血鬼。 – Barmar

+0

'LEFT JOIN' +'COUNT' +'GROUP BY' – zerkms

回答

2
SELECT c.cat_type 
    , COUNT(m.met_type) AS occurrences 
FROM categoty c LEFT JOIN meta m ON c.cat_id = m.met_type 
GROUP BY c.cat_type 
+0

不顯示任何內容:/ – SnakeSheet

+0

您可能希望按cat_type進行分組,而不是cat_id。目前的查詢適用於MySQL,因爲GROUP BY比其他RDBMS更寬鬆,但據我所知不在任何其他RDBMS上。 –

+0

@Joachim Isaksson:有時候很難在清晨收集想法。謝謝。 – potashin

0
SELECT cate.cat_type as 'cat_id', count(meta.met_type) as 'occurences' 
FROM Category cate 
LEFT JOIN Meta meta on(cate.cat_id = meta.met_type) 
GROUP BY meta.met_type 
+0

只顯示d | 4 – SnakeSheet

+0

已更新,請再試一次 – hamitana