php - 如何从两个不同的表中进行 SELECT 和 COUNT 以在一个查询中获取帖子的 "like count"?

标签 php mysql select

我对此有点菜鸟,但我正在努力学习,我有两个表,第一个表(新闻)包含有关博客帖子的所有信息,它具有以下结构:

* NEWS (TABLE 1)
- id_new
- id_category
- date
- ...etc
- **likes**

我还有第二张 table :

* LIKES (TABLE 2)
- id_like
- id_new
- id_user
- date
- ip_user

因此,我想选择表 1 中的所有行来显示所有新闻,但我也想计算喜欢数并获取每个新喜欢列的计数。

最佳答案

此方法将 NEWS 表左连接到一个子查询,该子查询查找每个新闻报道的点赞数。

SELECT
    t1.*,
    COALESCE(t2.likes, 0) AS likes
FROM NEWS t1
LEFT JOIN
(
    SELECT id_new, COUNT(*) AS likes
    FROM LIKES
    GROUP BY id_new
) t2
    ON t1.id_new = t2.id_new

请注意,没有点赞的故事根本不会出现在 LIKES 表中,并且计数为零。另请注意,我假设 LIKES 表中的每条记录都对应于一个逻辑“like”。如果不是,则可以修改查询以计算其他内容。

关于php - 如何从两个不同的表中进行 SELECT 和 COUNT 以在一个查询中获取帖子的 "like count"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003948/

相关文章:

php - 使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用

php - 如何从另一个表更新mysql pdo中的字段

mysql - 从表中删除旧记录

php - 从数据库中不选择任何项目返回 1,为什么?

html - 字体颜色不符合 textarea 和选择框的 css 中指定的样式

jquery - 使用 jquery 设置 select 的第一个选项值

php - PHP中如何确保日期有效?

php - MySQL 将不正确的记录返回给按位 SELECT

php - 如果只有同一用户会看到 XSS 输入是否构成威胁?

跨越多行的 MySQL 表注释