2011-05-11 5 views
0

의견 수로 정렬 된 기사 목록을 얻으려고합니다. 나는 aticle의 투표에 의해 분류 된 목록을 얻기 위해 비슷한 과정을 만들었지 만, 왜 지금은 작동하지 않는지 모르겠다.count()가 0 일 때 대/소문자를 사용합니까?

SELECT a.*,cc.params as catparams,cc.title as cattitle,u.username, 
CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug, 
CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug, 
CASE WHEN (COUNT(rs.id)=0) THEN 0 ELSE COUNT(rs.id) END as total_comments 
FROM jos_content AS a 
INNER JOIN table_users AS u ON u.id = a.created_by 
INNER JOIN table_categories AS cc ON cc.id = a.catid 
LEFT JOIN table__comments AS rs ON rs.id = a.id 

이 코드는 아티클에 주석 테이블에 항목이 하나 이상 있으면 결과 만 반환합니다. 내가 원한 것은 모든 기사의 목록을 얻는 것이며 코멘트 테이블에 항목이 없으면 total_comments로 0을 반환합니다. 나는 INNER JOIN, LEFT JOIN 및 RIGHT JOIN으로 시도했습니다.

도움이 정말 많이 있습니다!

답변

0

난 당신이 하위이

SELECT 
    a.*, 
    cc.params as catparams, 
    cc.title as cattitle, 
    u.username, 
    CASE 
     WHEN CHAR_LENGTH(a.alias) 
     THEN CONCAT_WS(":", a.id, a.alias) 
     ELSE a.id END as slug, 
    CASE 
    WHEN CHAR_LENGTH(cc.alias) 
     THEN CONCAT_WS(":", cc.id, cc.alias) 
     ELSE cc.id END as catslug, 
    (SELECT COUNT(id) FROM table__comments WHERE id=a.id) as total_comments 
FROM 
    jos_content AS a 
    INNER JOIN table_users AS u ON u.id = a.created_by 
    INNER JOIN table_categories AS cc ON cc.id = a.catid 
+0

당신이 감사 감사 감사 선택할 필요가 있다고 생각합니다 !!!! – user748690

관련 문제