2015-12-30 8 views
1

Ok. поэтому у меня есть 2 таблицы: вопросы и questions_answersPostgreSQL вложенный запрос выбора

table 1 columns) question_text | question_id 
table 2 columns) answer_text | question_id 

Я хочу, чтобы выполнить запрос, получающий каждый ряд вопросов с подсчетом количества ответов, имеет вопрос ... До сих пор я придумал это:

SELECT *, (select count(*) from questions   
JOIN question_answers on question_answers.question_id = 
questions.question_id) as answers from questions 

Однако этот запрос возвращает общее количество ответов по всем поставленным вопросам. Так что если вопрос 1 имеет 2 ответа и вопрос 2 имеет 3, этот запрос возвращает 5 для всех вопросов. Я хочу, чтобы он возвращал количество ответов на каждый вопрос. Любая помощь??? Не могу показаться, чтобы понять это = (

Это то, что запрос возвращает:

This is what the query returns =(

ответ

4
select question_text 
,  count(qa.question_id) as answer_count 
from questions q 
left join 
     question_answers qa 
on  qa.question_id = q.question_id 
group by 
     q.question_id 
+0

выберите q.question_id, COUNT (qa.question_id) как answer_count с вопросами q left join question_answers qa on qa.question_id = q.question_id group byq.question_id (ПРОСТО ИЗМЕНИЛОСЬ, ЧТО И БИТ И ЭТО РАБОТАЕТ ИДЕАЛЬНО !!! БЛАГОДАРЯ!) –

2

Попробуйте этот SQL-запрос:

SELECT Q.question_id, COUNT(QA.question_id) as questions_cnt 
FROM Questions AS Q 
    LEFT JOIN Questions_answers AS QA ON Q.question_id = QA.question_id 
GROUP BY Q.question_id 
+0

'COUNT (*)' вернет 1 на вопрос без ответов – Andomar

+0

Вы правы :) – fabulaspb

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