2014-07-09 5 views
0

기본적으로 내가 할 노력하고있어 것은MySQL은

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 .= '-'; 
} 
} 

그래서 내 쿼리

내 다음 쿼리에 주석 당 5 나의 응답을 제한도 예상대로 작동하지 않는 한계에 가입 왼쪽 내가

1.Question 한
--- 먼저 응답
: 출력에 노력하고있어하면 다음과 같다 --- 두 번째 응답
--- 셋째 응답

2.Question 두
--- 먼저 응답
--- 두 번째 응답
--- 셋째 응답

3.Question 세
--- 먼저 응답
--- 두 번째 응답
--- 셋째 응답

그 밖으로 그냥 퍼팅 이유를 잘 모르겠어요

1.Question 한
--- 먼저 응답
--- 두 번째 응답

: 0

대신 내가 뭘 얻을 것은 이것이다 첫 번째 질문과 2 답변. 사전에 어떤 도움

감사합니다.

답변

0

귀하의 하위 쿼리가 잘못 :

LEFT JOIN (SELECT id FROM replies LIMIT 3) replies 

당신은 구체적 및 인클로저에 이러한 연구 결과에 대한 매개 변수를 정의해야합니다 WHERE 당신의 빠른 응답 @gpupo에 대한

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

감사하지만 난 아니에요 당신을 따르십시오 ... 이런 뜻입니까? LEFT JOIN (SELECT * FROM comments.id = replies.comment_id LIMIT 3) 이것은 불행히도 나를 위해 작동하지 않기 때문에 – Benjamin