基本上我正在尝试做的是将我的回复限制在我的查询中每条评论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.问题一
---第一反应
---第二回应
---第三次回复
2.Question Two
---第一反应
---第二回应
---第三次回复
3.Question Three
---第一反应
---第二回应
---第三次回复
相反,我得到的是:
1.问题一
---第一反应
---第二次回复
我不确定为什么它只是提出第一个问题而2则回应。
提前感谢您的帮助。
答案 0 :(得分:0)
你的子查询错了:
LEFT JOIN (SELECT id FROM replies LIMIT 3) replies
您必须具体并在机箱WHERE
中定义这些发现的参数LEFT JOIN (SELECT a.id FROM replies a WHERE ...