MySQL选择每个类别的最大行数

时间:2016-12-14 04:16:08

标签: php mysql

所以我很难让这个查询起作用。我有3个表需要相互沟通,列出所有获奖者来自不同类别的民意调查。

基本结构:

site_poll(主表,每个民意调查的选项): ID(INT,主要) cat_id(INT)

site_poll_cat(每个类别的表格) ID(INT,主要) name(VARCHAR)

site_poll_votes(每张投票表) ID(INT,主要) vote_id(这是site_poll的ID) user_id(INT)

我想要的是随机列出的6名获胜者,但每个类别一名获胜者。获胜者由在site_poll_votes表中获得更多行的人定义。

这是我提出的查询,但没有出现:

SELECT MAX(maxvotes) AS votes
FROM
  (SELECT e.*,
      c.name,
      c.icon,
      r.icon AS radio_icon,
      COALESCE(COUNT(DISTINCT(v.id)),0) AS maxvotes
FROM site_poll_votes v
INNER JOIN site_poll e ON v.vote_id = e.id
INNER JOIN site_poll_cat c ON e.cat_id = c.id
LEFT JOIN site_radios r ON e.radio_id = r.id
GROUP BY cat_id) q
GROUP BY cat_id
ORDER BY rand() LIMIT 6

注意:site_radios是另一个表,但主要用于获取每个轮询选项的无线电台图标;我所展示的结构中没有指定某些列,因为它们主要用于设计目的。

任何帮助都会受到高度赞赏。

提前致谢!

编辑:

期望的行为:

假设我们有这些条目的site_poll:

值:98.1 FM,cat_id:3(site_poll_votes中4票)

值:99.3 FM,cat_id:3(site_poll票数10票)

值:John,cat_id:2(在site_poll投票中投1票)

值:Josh,cat_id:2(site_poll票数为0票)

我想要的是只有98.1 FM和John出现,因为他们获得了最多的行数(投票)。但是让我们想象有10个类别,所以我不想随意展示,以便每次都会出现6个不同类别及其获胜者。

0 个答案:

没有答案