在表SQL

时间:2016-06-18 09:43:27

标签: mysql sql

我有3张桌子

1)question  
2)options
3)answers

表1包含多项选择题列表。表2包含问题的多个选项。

考虑一个例子,我有一个问题“你最喜欢哪个游戏?”

它存储在表1中,ID为1.对于这个问题,表2中有3个选项;作为“蟋蟀”,“足球”,“网球”与ids 1,2& 3。

当用户回答此问题时,问题ID和选项ID被存储到第三个表中,就好像他选择了足球一样,表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    |
-------------------------------------------------------

但是当我尝试的时候,我没有得到板球的计数,因为没有人选择板球。我必须把板球的数量计为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

1 个答案:

答案 0 :(得分:-1)

好的,例如,我会尝试假设你的情况;

3张表:

  1. 问题(question_id,问题,..)
  2. question_option (question_id,option_id,option,..)注意:question_id是fk
  3. <强> user_answer (question_id,option_id,..)

    select count(ua.option_id) count, qo.option,
    q.question_name 
    from question q, uestion_option qo, user_answer ua
    where q.question_id = ua.question_id
    and q.question_id = qo.question_id
    and qo.option_id = ua.option_id
    group by q.question_name, qo.option