2011-07-06 52 views
-1

我有三個表tb_poll,tb_poll_answer,tb_poll_votes如何寫這個mysql查詢?

tb_pollid,question

tb_poll_answerid,poll_id,answer

tb_poll_votesid,poll_answer_id

我想選擇所有的問題,這答案(包括票數)。

最後我想列出

Id Question   Answers 

1  Which is....?  1.PHP(70) 2.ASP(30) 3.JSP(2) 

2  ......    ....... 

如何寫在這裏最好的MySQL查詢?

+0

我們一般喜歡上看到提問者的部分​​努力一點,#2的結果。同意@Neil,你試過了什麼?您正在撰寫的查詢中是否存在與您遇到問題有關的特定問題? –

回答

0

最後我得到通過子查詢

SELECT q.id,q.question,av.vt,GROUP_CONCAT(CONCAT(av.answer,av.vt) SEPARATOR ' ') 
AS Answers FROM tb_poll AS q LEFT JOIN 
(SELECT a.answer,a.poll_id,COUNT(v.id) AS vt FROM tb_poll_answers AS a LEFT JOIN tb_poll_votes AS v ON a.id=v.poll_answer_id GROUP BY a.id) AS av 
ON q.id=av.poll_id 
GROUP BY q.id 
2

現在試試這個查詢:

SELECT q.id,q.question, 
     GROUP_CONCAT(CONCAT(a.id,'.',a.answer,COUNT(v.id) SEPARATOR ' ')) AS `Answers` 
FROM `tb_poll` AS q 
LEFT JOIN `tb_poll_answers` AS a 
    ON q.id = a.poll_id 
LEFT JOIN `tb_poll_votes` AS v 
    ON a.id = v.poll_answer_id 
WHERE 1 
GROUP BY q.id 
ORDER BY q.id 
+0

它只返回一個排它行包含所有tb_poll_answer的列(答案)串聯 – w3father

+0

@ w3father哎呀對不起,忘了一點 – ianbarker

+0

集團爲什麼要使用WHERE 1?重要目的在這裏? – w3father