php - SQL:从表中选择列并比较+计数

标签 php mysql sql

我正在改进我的 php 脚本,它有两个简单的 sql 查询。我想做的是将两个查询合并为一个。

第一个查询:

SELECT categories.*, entries.* 
FROM categories, entries 
WHERE entries.cat_id = categories.cat_id 
ORDER BY dateposted ASC 
LIMIT 5;

第二个查询:

SELECT comments.* 
FROM comments 
WHERE comments.entry_id = '. $row['id'].';

这两个在分开时效果很好。我只需要将它们组合成一个(仍然很简单,请不要使用 UNION 或 INNER JOIN),并可能计算查询中特定条目的评论数。 另外,我的“评论”表有五列(comment_id、post_id、作者、正文、发布日期),如果这对了解有帮助的话。

我尝试了不同的方法。像这样:

SELECT categories.*, entries.*, COUNT(comments.entry_id) AS comm_num 
FROM categories, entries, comments 
WHERE entries.cat_id = categories.cat_id 
AND comments.entry_id = entries.id 
ORDER BY dateposted ASC LIMIT 5;

没用...

任何帮助将不胜感激。

最佳答案

您的第一个查询本质上是一个连接,它可能不会更快。您可以像这样查询条目(同时显示相应的类别信息):

SELECT entries.*, categories.* 
FROM entries
LEFT JOIN categories ON entries.cat_id = categories.cat_id 
ORDER BY dateposted ASC 
LIMIT 5;

此外,听起来您实际上并不想返回此查询中的每个评论行,而只是获取每个“条目”的评论计数。为此,您可能会这样做:

SELECT entries.*, categories.*, COUNT(comments.comment_id) AS comm_num  
FROM entries
LEFT JOIN categories on entries.cat_id = categories.cat_id
LEFT JOIN comments on comments.entry_id = entries.entry_id
GROUP BY entries.entry_id
ORDER BY dateposted ASC 
LIMIT 5;

请注意,COUNT 函数计算的是评论 ID,而不是条目 ID。

关于php - SQL:从表中选择列并比较+计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355635/

相关文章:

mysql 正则表达式 utf-8 字符

sql - Access 中的简单 SQL 查询因缺少分号错误而失败

php - 使用编译代码和 PHP 加速器提高性能之间的差异

javascript - 如何在动态添加/删除输入字段中获取唯一的随机值

PHP & MySQL : Select from where id=$id

MySQL : Error Code 1215 : Cannot add foreign key constraint

php - 在同一服务器的外部脚本中使用自定义函数获取 WordPress 用户元数据

php - 如何sql更新两个条件

sql - 连接多个表的连接表

php - 我怎样才能从 web 表单正确设置 PHP 邮寄文本的样式?