繁体   English   中英

选择列和匹配行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM