gpt4 book ai didi

php - mysql 左连接限制未按预期工作

转载 作者:行者123 更新时间:2023-11-30 00:04:54 25 4
gpt4 key购买 nike

基本上我想做的就是将查询中的每条评论的回复限制为 5

我的以下查询

SELECT comments.id, comments.comment, 
replies.id reply_id, replies.comment_id, replies.reply
FROM comments
LEFT JOIN (SELECT id FROM replies LIMIT 3) replies
ON comments.id = replies.comment_id
WHERE comments.user_id = ? ORDER BY comments.id DESC LIMIT 3

$comments = array();
$comm_replies = array();

while($row = $query->fetch(PDO::FETCH_ASSOC)) {

$comm_id = $row['id'];
$comm_user_id = $row['user_id'];
$comm = $row['comment'];

if (empty($row['reply_id'])) {
continue;
}

$comments[$comm_id] = $comm;
$comm_replies[$comm_id][] = $row;
}

foreach ($comments as $comm_id => $comm) {
echo "comment - $comm\n";
if (!isset($comm_replies[$comm_id])) {
continue;
}

$prefix = '---';
foreach ($comm_replies[$comm_id] as $reply_id => $row) {
echo "$prefix $row['reply_id'], $row['reply']\n";
$prefix .= '-';
}
}

所以我试图输出如下:

1.问题一
---第一 react
---第二个响应
---第三个响应

2.问题二
---第一 react
---第二个响应
---第三个响应

3.问题三
---第一 react
---第二个响应
---第三个响应

我得到的是这样的:

1.问题一
---第一 react
---第二个响应

我不知道为什么它只提出第一个问题和第二个问题。

感谢您提前提供的任何帮助。

最佳答案

您的子查询是错误的:

LEFT JOIN (SELECT id FROM replies LIMIT 3) replies 

您必须在附件 WHERE 中明确并定义这些发现的参数

LEFT JOIN (SELECT a.id FROM replies a WHERE ...

关于php - mysql 左连接限制未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24659607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com