选择列和匹配的行

时间:2015-06-04 10:53:23

标签: mysql join

在我的MySQL表中选择数据时出现了一个小问题。我有两张桌子。

questions_table
- id
- name

results_table
- id
- form_id
- answer 1
- etc.

现在我想选择所有包含结果的表单,并且form_id与表单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语句吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

  

我想选择所有有结果的表格

试试这个:(编辑:计数添加)

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