php - 所有帖子消息均未通过 sql GROUP_CONCAT 显示

标签 php mysql sql

我有这个comments表来存储每个帖子的所有评论

comment_id    comment_message    posts_id   u_id   created
=============================================================
46            comments....       2          6      1559376498
47            comments....       2          6      1559376502
48            comments....       2          6      1559376598
每个评论的

comments_like react (r_id)

cl_id    comment_id   posts_id    u_id   r_id   created
=============================================================
42       46           2           6      6     1559376598
43       47           2           6      2     1559376598
44       48           2           6      8     1559376598
45       46           2           1      2     1559376598

注意: posts_id 表示帖子表 id,u_id 表示用户表 id,r_id 表示 react id, comment_id 表示评论表id。

现在,我想获取特定 ID 的所有评论,其中包含 react ID 的列表由登录用户提供的 react ID。

为此,我使用以下 SQL 查询,但它没有显示我的预期结果:(

$query = $this->_db->_pdo->prepare("
            SELECT c.*, u.u_id, u.full_name, cl.r_id, GROUP_CONCAT(cl.r_id ORDER BY cl.u_id) AS r_id
            FROM comments AS c 
            LEFT JOIN users AS u ON c.u_id = u.u_id 
            LEFT JOIN comments_like AS cl ON cl.comment_id = c.comment_id 
            WHERE c.posts_id = '$post_id' 
            ORDER BY c.comment_id  ");  

此查询的输出应该是

1) 特定帖子 ID ($post_id) 的所有评论;
2) react ID 列表
3) 登录用户的 react ID。

最佳答案

您的查询中缺少 GROUP BY 子句,因此它将所有评论分组为一行;您需要按c.comment_id分组。这应该会给你你想要的结果:

SELECT c.*, u.u_id, u.full_name, cl.r_id, 
       GROUP_CONCAT(cl.r_id ORDER BY cl.u_id) AS r_id
FROM comments AS c 
LEFT JOIN users AS u ON c.u_id = u.u_id 
LEFT JOIN comments_like AS cl ON cl.comment_id = c.comment_id 
WHERE c.posts_id = 2
GROUP BY c.comment_id
ORDER BY c.comment_id

输出:

comment_id  comment_message posts_id    u_id    created     u_id    full_name   r_id
46          comments....    2           6       1559376498  6       Bill Jones  2,6
47          comments....    2           6       1559376502  6       Bill Jones  2
48          comments....    2           6       1559376598  6       Bill Jones  8

Demo on dbfiddle

关于php - 所有帖子消息均未通过 sql GROUP_CONCAT 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56405176/

相关文章:

php mysqli 更新并获取

php - 连接到 MySQL/sqlbuddy PHP

MySQL 不匹配以数字结尾的 varchar 键

php - 这个 MySQL 连接查询有什么问题

php - 如何使用jQuery在父窗口中提交表单而不刷新父窗口的内容(Ajax提交)

php - 添加数据库的列以获得总和然后除以得到百分比

c# - NullReferenceException错误数据库数据到表html

php - 可以从 mysql 数据库获取用户名和密码匹配

JavaScript 警报标题

MySQL触发器插入到另一个表