2015-06-04 8 views
0

У вас возникла небольшая проблема с выбором данных в моей таблице MySQL. У меня есть 2 стола.ВЫБОР столбцов и соответствующих строк

questions_table 
- id 
- name 

results_table 
- id 
- form_id 
- answer 1 
- etc. 

Теперь я хочу, чтобы выбрать все формы, имеет результаты, и form_id соответствует идентификатор формы, потому что, как они связаны между собой.

Я получил это:

select f.id, f.name, count(res.id) from forms f LEFT JOIN results res ON f.id = res.form_id 

Но проблема в том, я получаю только 1 строку из него, в то время как у меня есть несколько форм с несколькими результатами, но он выбирает только одну форму.

Что я делаю неправильно? Это заявление LEFT JOIN?

ответ

1

Совокупная функция без group by всегда будет возвращать одну строку. Вам нужно добавить group by

select 
f.id, 
f.name, 
count(res.id) 
from forms f LEFT JOIN results res ON f.id = res.form_id 
group by f.id 
+0

Спасибо это ответ , Я запомню это как ответ через пару минут. –

1

Я хочу, чтобы выбрать все формы, имеют результаты

Попробуйте это: (отредактировано: COUNT добавлено)

SELECT f.id, f.name, count(res.form_id) AS cnt 
FROM forms AS f 
LEFT JOIN results AS res ON f.id = res.form_id 
WHERE res.form_id IS NOT NULL 
GROUP BY f.id 
+0

Это на самом деле лучший ответ на мой вопрос, только у вас нет счета в запросе! Спасибо за ответ! –

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