2014-05-21 2 views
0

이 질문을하는 법을 모르겠지만 최선을 다할 것입니다. 나는 각 주석이 동일한 MySQL 데이터베이스에 두 개의 테이블에 별도로 저장됩니다 응답의 특정 번호와의 의견과 재생을 갖도록 댓글과 답글 시스템을 설계하고, 그래서 우리는 두 개의 테이블MySQL에서 특정 순서로 데이터 검색

표 1

에 있습니다

코멘트 ID | 코멘트 | 날짜

표 2

X | 응답 텍스트 | 날짜

여기서 X는 답장이 속한 코멘트의 ID를 나타냅니다.

나는 코드가

$res=mysql_query("SELECT * from commenttable ORDER BY `Date` DESC "); 
while($row=mysql_fetch_array($res)) 
{ 
echo $row["Comment"]; 
} 

목록 코멘트 최근에서 오래된로 알고있다.

이 코드를 수정하여 가장 많은 응답 수가 가장 적은 코멘트의 의견을 나열 할 수 있습니까?

+0

가 귀하의 질문에 대답하기 위해, 그렇습니다이 가능합니다. – asprin

답변

0

답장 테이블에서 "개수"쿼리를 실행하고 그 값에 따라 정렬 할 수 있습니다. ,

Select commentId, count(1) as c 
from replytable 
group by commentId 
order by c; 

각 commentId 당신에게 응답의 수를 얻어야한다 : 는 나는이 여러 가지 방법으로 개선 할 수있다 확신 그래서 SQL 전문가는 아니지만, 나는 이것이 올바른 방향을 설정 바랍니다 ID에 따라 주석 테이블에서 주석 데이터를 가져올 수 있습니다.

추가 읽기 : How to use count and group by at the same select statement http://www.w3resource.com/sql/aggregate-functions/count-with-group-by.php

+0

응답이없는 주석을 나열 할 수 있습니까? – MrDi

+0

가능해야합니다. 에서 commentid가'(답글에서 별개의 commentId을 선택 코멘트 MINUS에서 commentId를 선택) – ayeletd

0

나는 count()이 질문에 대한 해답이 될 것이라고 생각합니다. 그러나 두 번째 테이블에 대해 응답 한 횟수를 계산하기 전에 두 테이블을 조인 할 수 있습니다. 당신은이 같은 ORDER BY count(id)

0

뭔가 작업을해야 사용할 수 있습니다

select t1.comment_id, count(t2.x) 
FROM table1 t1 LEFT JOIN table2 t2 
ON t1.comment_id=t2.x 
GROUP BY t1.comment_id 
ORDER BY 2 DESC 
+0

는 LEFT를 사용하거나 권리가있는 경우에 가입 할 수있는 경우이를 수행하는 한 (아마 비효율적 인) 방법은 가'의견 SELECT * FROM 것 t2.com의 t1.comment_id에 대한 레코드가 없습니다. – mstrthealias

+0

일지 모르지만 내부 참여가 더 합리적입니다. 아마 당신은 약간의 답이있는 질문을 원하기 때문입니다. 이론적으로 왼쪽 결합은 가능하지만. x가 외래 키이고 기존의 주석에 응답 할 수 없으므로 오른쪽 조인이 불가능합니다. [편집] 당신이 그것에 대해 생각할 때 왼쪽 조인이 의미가 있습니다. –

+0

t1과 table1의 차이점 – MrDi

관련 문제