2015-12-12 81 views
-1

我有一個由三個表組成的數據庫,一個用於電影(id,plot,length等),另一個用於流派(id,name)。第三張表Movie2Genre由FOREIGN KEY組成,這樣我就可以將電影與某種流派(idMovie,idGenre)關聯起來。按出現次數排序外鍵(SQL)

然後我用下面的SQL列出每個活動類型:但

SELECT DISTINCT G.name 
    FROM Genre AS G 
     INNER JOIN Movie2Genre AS M2G 
      ON G.id = M2G.idGenre 
      ORDER BY G.name 

,而不是由G.name對它們進行排序,我想訂購他們通過流派鏈接到電影最倍。

如果有鏈接到驚悚只有一個鏈接喜劇電影鏈接到的流派戲劇,電影 - 我想他們是排序爲:

  1. 戲劇
  2. 驚悚
  3. 喜劇

有人能幫我嗎?

+0

是什麼原因我會得到下投.. – Stim

+0

[排列方式計數](https://stackoverflow.com/questions/9545637/sql-請按順序) – Serpiton

+0

謝謝Serpiton,我會徹底閱讀! – Stim

回答

0

所以,Order by Count是我的第一條線索,由用戶Serpiton提供。但是我的情況與鏈接中提供的情況有點不同。在子查詢的幫助下,我能夠得到我期待的結果。

下面的SQL解決我的問題:?

SELECT G.name, M2G.totalCount AS tCount 
FROM Genre AS G 
LEFT JOIN 
(
    SELECT `idGenre`, COUNT(*) AS totalCount 
    FROM `Movie2Genre` 
    GROUP BY `idGenre` 
) M2G ON G.`id` = M2G.`idGenre` 
ORDER BY tCount DESC