[英]SELECTING columns and matching rows
在选择MySQL表中的数据时遇到了一个小问题。 我有2张桌子。
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语句吗?
没有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
我想选择所有有结果的表格
试试这个:(已编辑:已添加计数)
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.