所以我很难让这个查询起作用。我有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个不同类别及其获胜者。