1
我有3個表獲取計數byjoining多個表
1)question
2)options
3)answers
表1中包含的多項選擇題名單。表2包含該問題的多種選擇。
考慮一個例子,我有一個問題「你最喜歡哪一款遊戲?」
它存儲在ID爲1的表1中。對於這個問題,表2中有3個選擇;作爲「板球」,「足球」,「網球」與ID 1,2 & 3.
當用戶回答這個問題時,在表3中是問題ID和選項ID。
如果其他用戶選擇相同的選項新條目保存在表3
我需要的是,我想要得到的每個選項的計數表3
考慮10級的用戶選擇板球,15用戶在選擇足球,沒有用戶選擇網球,所以我需要算爲10,15,0與其相應的選項ID
表名:問題
--------------------------------
| id | question |
--------------------------------
| 1 | which game u like most |
表名:選擇
------------------------------------------------
| id | qid | option_name |
------------------------------------------------
| 1 | 1 | cricket |
------------------------------------------------
| 2 | 1 | football |
------------------------------------------------
| 3 | 1 | tennis |
------------------------------------------------
表名:回答
--------------------------------------------
| id | qid | optionId |
--------------------------------------------
| 1 | 1 | 3 |
---------------------------------------------
| 2 | 1 | 3 |
----------------------------------------------
| 3 | 1 | 2 |
----------------------------------------------
上表意味着,2人選擇網球,1人選擇足球,沒有人選擇板球。所以,我需要的結果表作爲
------------------------------------------------------
| id | question | option_name | count |
------------------------------------------------------
| 1 | which game u like most | cricket | 0 |
-------------------------------------------------------
| 2 | which game u like most | football | 1 |
-------------------------------------------------------
| 3 | which game u like most | tennis | 2 |
-------------------------------------------------------
但是,當我嘗試,我沒有得到板球計數,因爲沒有一個選擇cricket.I必須讓板球的計數爲0任何一個可以幫我解決這個問題? 我的SQL代碼是
SELECT count(an.optionId) count , op.option_name, q.question from
questions q, options op, answers an where q.id=1
and q.id=op.qid
and op.id=an.optionId
group by q.question, op.option_name
工作正常。我是sql新手,所以我在這個查詢中花了很多時間。謝謝 –