Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过一个查询对数据进行分组和计数_Php_Mysql - Fatal编程技术网

Php 通过一个查询对数据进行分组和计数

Php 通过一个查询对数据进行分组和计数,php,mysql,Php,Mysql,这是我在数据库中的表结构 我想通过计算likes表中的post字段,获得每个帖子的喜欢次数,并使用foreach循环为每个帖子显示它 我的问题是 有没有一种方法可以通过使用JOIN、groupby和COUNT表执行一次查询而不创建多个查询。 是的,这在MySQL中有效。但我不认为这是一个功能。不按所选列分组或聚合是错误的。它在其他DB引擎中不起作用。特别是新手,他们会感到困惑。谢谢你,但是你能告诉我什么是p和l吗?这些是表posts和likes的别名。您可以这样定义:…from posts p

这是我在数据库中的表结构

我想通过计算likes表中的post字段,获得每个帖子的喜欢次数,并使用
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