这是页面网址 http://domain.com/testphp?id=1&mview=4
从名为的表中显示选项 je_add_choice ,它包含字段名称
它显示了对特定民意调查的投票选择,我想要做的是,我必须通过选票显示选择顺序。但问题是,选择的投票计数来自另一个名为 je_user_vote 的表 它包含字段
在投票页面中,我使用了查询
select * from je_addchoice where poll_id='$poll_id'
在此查询中,$ pollid变量来自url $ _GET ['id']
我想将查询重写为
select * from je_addchoice where poll_id='$poll_id' // append the code order by count(fieldname) from je_user_vote table.
我已经用过了
SELECT *, (
SELECT count(*)
FROM je_uservote T2
WHERE T2.pollid=T1.pollID
AND T2.choiceid=T1.choiceID) AS votes
FROM je_addchoice T1
ORDER BY votes
但它显示了空白页面。任何人都可以帮我解决这个问题。提前感谢您阅读本文并帮助我解决
答案 0 :(得分:2)
您需要的只是左连接和聚合函数来计算投票。在这里查询你可以尝试(未经测试):
"SELECT COUNT(*) AS total_votes, t1.*
FROM je_add_choice t1
LEFT JOIN je_user_vote t2
ON t1.choice_id=t2.choice_id
AND t1.poll_id=t2.Poll_id
WHERE t1.poll_id = " . $poll_id . "
GROUP BY t1.choice_id
ORDER BY 1 ASC"
答案 1 :(得分:1)
SELECT COUNT(t2.choice_id) AS total_votes, t1.*
FROM je_addchoice t1
LEFT JOIN je_user_vote t2
ON t1.choice_id=t2.choice_id
AND t1.poll_id=t2.Poll_id
WHERE t1.poll_id = " . $poll_id . "
GROUP BY t1.choice_id
ORDER BY 1 DESC
这是我的问题的答案。我只是从subred的答案中获取编码,并根据页面中的要求修改名称,然后我得到了结果。现在工作正常
http://www.domain.com/projects/je/pollpage.php?id=2&mview=4
这是一个URL,现在按照高计数投票到低计数投票的顺序显示选项
答案 2 :(得分:1)
SELECT COUNT(t2.choice_id) AS total_votes, t1.*
FROM je_addchoice t1
LEFT JOIN je_user_vote t2
ON t1.choice_id=t2.choice_id
AND t1.poll_id=t2.Poll_id
WHERE t1.poll_id = " . variable_name . "
GROUP BY t1.choice_id
ORDER BY 1 DESC
希望这有帮助。