在我的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语句吗?
答案 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