2015-12-12 123 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