2016-06-18 3 views
-5

У меня есть 3 таблицыПолучение количество одних и тех же fileds в таблице SQL

1)question 
2)options 
3)answers 

Таблица 1 содержит список вопросов множественного выбора. Таблица 2 содержит несколько вариантов ответа на вопрос.

Рассмотрим пример, у меня есть вопрос «Какая игра вам больше всего нравится?»

Он хранится в таблице 1 с идентификатором 1. Для этого вопроса в таблице 2 есть 3 варианта; как «крикет», «футбол», «теннис» с идентификаторами 1,2 & 3.

Когда пользователь отвечает на этот вопрос, идентификатор вопроса и идентификатор параметра хранятся в третьей таблице, как если бы он выбирал футбол, запись в таблице 3 указан идентификатор вопроса и идентификатор опции.

Если другой пользователь может выбрать ту же опцию Новая запись сохраняется в таблице 3.

Моя потребность в том, что я хочу, чтобы получить количество каждого вариантов в таблице 3.

Рассмотрим 10 пользователей выбрать крикет, 15 пользователи выбирают футбол, ни один пользователь не будет выбран в теннис, так что мне нужно посчитать, как 10,15,0 с соответствующей опцией ид

имя таблицы: вопросы

-------------------------------- 
| 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. Может ли один помочь мне решить эту проблему? My 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 
+0

Серьезно? Вы действительно думаете, что мы сможем помочь вам с этой небольшой информацией? – Akshay

+0

Если вам нравится, рассмотрите следующий простой двухэтапный курс действий: 1.Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. – Strawberry

+0

@Akshay Если вы считаете, что вопрос неясен или неполный, подумайте об использовании вашего голосования. – Strawberry

ответ

-1

хорошо, например, я буду стараться считать ситуацию;

3 таблицы:

  1. вопрос (question_id, вопрос, ..)
  2. question_option (question_id, option_id, вариант, ..) примечание: question_id является Ф.К.
  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 
    
+0

Пожалуйста, не задавайте больше вопросов в ответе. Подождите, пока ваш представитель достаточно высок, чтобы комментировать. – PyNoob

+0

Извините, что вы имеете в виду, задавая больше вопросов? –

+0

вы отредактировали свой ответ. Вы задали вопрос в конце, который вы не должны делать. Кроме того, пожалуйста, не пытайтесь «предположить» ситуацию с пользователями. Еще раз попросите дать ясность в комментарии. – PyNoob

Смежные вопросы