mysql左连接限制没有按预期工作

时间:2014-07-09 16:58:07

标签: php mysql

基本上我正在尝试做的是将我的回复限制在我的查询中每条评论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则回应。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你的子查询错了:

LEFT JOIN (SELECT id FROM replies LIMIT 3) replies 

您必须具体并在机箱WHERE

中定义这些发现的参数
LEFT JOIN (SELECT a.id FROM replies a WHERE ...