Php 通过一个查询对数据进行分组和计数
这是我在数据库中的表结构 我想通过计算likes表中的post字段,获得每个帖子的喜欢次数,并使用Php 通过一个查询对数据进行分组和计数,php,mysql,Php,Mysql,这是我在数据库中的表结构 我想通过计算likes表中的post字段,获得每个帖子的喜欢次数,并使用foreach循环为每个帖子显示它 我的问题是 有没有一种方法可以通过使用JOIN、groupby和COUNT表执行一次查询而不创建多个查询。 是的,这在MySQL中有效。但我不认为这是一个功能。不按所选列分组或聚合是错误的。它在其他DB引擎中不起作用。特别是新手,他们会感到困惑。谢谢你,但是你能告诉我什么是p和l吗?这些是表posts和likes的别名。您可以这样定义:…from posts p
foreach
循环为每个帖子显示它
我的问题是
有没有一种方法可以通过使用JOIN
、groupby
和COUNT
表执行一次查询而不创建多个查询。
是的,这在MySQL中有效。但我不认为这是一个功能。不按所选列分组或聚合是错误的。它在其他DB引擎中不起作用。特别是新手,他们会感到困惑。谢谢你,但是你能告诉我什么是p和l吗?这些是表
posts
和likes
的别名。您可以这样定义:…from posts p
或…from posts as p
。在这种情况下不需要它们,但可以缩短查询。有一种方法,我可以将该查询与此SELECT*FROM posts
合并,这样我就可以在一个foreach
循环中获取所有post数据和类似内容。或者我可以将两个foreach
循环组合起来。这有点太模糊了。如果你找不到答案,再问一个详细的问题。
SELECT p.*, COUNT(l.id)
FROM posts p
LEFT JOIN likes l
ON l.post = p.id
GROUP BY p.id
select p.id, p.title, p.content, count(l.id) as likes_count
from posts p
left join likes l on l.post = p.id
group by p.id, p.title, p.content