sql - 按其他关系计数排序查询

时间:2015-12-31 15:44:38

标签: php mysql sql

enter image description here

这就是我的表格。

所以一首歌可以有更多的选票。 我希望获得所有歌曲,按照它有多少票数排序。 我怎么能这样做?

实施例: 歌曲表将是

<h4 id="test">
  <input type="checkbox">
  Ready?
</h4>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

和投票:

1,"Master Of Puppets"
2,"Don't Cry"
3,"Baby"
4,"Song name"
5,"I want to break free"

我想查询歌曲表以获得投票最多的歌曲,这应该按此顺序

1,5
2,5
3,5
4,2
5,2
6,1

有没有办法只用一个查询来做到这一点? 我知道我可以对所有歌曲进行查询,然后为每首歌曲查询投票表,其中songId是当前歌曲ID,但是我可以只使用一个查询吗?

2 个答案:

答案 0 :(得分:4)

使用Count()聚合来计算每首歌曲获得的votes个数,并在Order by中使用它。

Left Outer join用于从song表返回行,即使一首歌从未投票

试试这个

SELECT s.id, 
       s.title 
FROM   song s 
       LEFT OUTER JOIN votes v 
                    ON s.id = v.songid 
GROUP  BY s.id, 
          s.title 
ORDER  BY Count(v.songid) DESC 

答案 1 :(得分:1)

// Works:
GroupedList.SelectedItem = Groups[0].Items[5]; // = new ValueColor(16);

// Works not:
GroupedList.SelectedItem = new ValueColor(16);

也可以是一种选择。