2012-09-28 6 views
0

나는이 같은 쿼리가 :조건문

SELECT c.review, u.username, c.date, c.good, c.rate_id, r.rating 
FROM comments AS c 
LEFT JOIN users AS u 
    ON c.user_id = u.user_id 
LEFT JOIN items as i 
    ON i.items_id = c.item_id 
LEFT JOIN master_cat AS m 
    ON m.cat_id = i.cat_id 
LEFT JOIN ratings as r 
    ON r.item_id = c.item_id 
WHERE i.item = '{$item}' AND c.user_id = r.user_id 
ORDER by {$sort}; 

을하지만이 제한됩니다. WHERE 문 (c.user_id = r.user_id)이 일치하면 I JSON은 c.rating을 출력합니다. 그렇지 않은 경우 응용 프로그램에서 인쇄하고 필요한 데이터를 건너 뜁니다.

예를 들어 동일한 사용자의 평가와 의견이 일치하면 데이터가 쌍을 이룹니다. 그러나 일부 의견 에는 아직 그들과 관련된 등급 (1에서 5까지 평가할 수 있음)이 없습니다. 따라서 대신 WHERE 절이있는 데이터를 건너 뛰고, 조건부로 만들고 0을 인쇄하고 나중에 IF 0, print out "not rated"을 말할 수 있습니다. (이것은 SQL에서 수행되지 않지만 자바는. SQL에서, 난 그냥 MySQL DB에 0을 저장해야합니다.)

나는 내가 WHERE을 삭제하고 SELECT의 일부를 확인해야합니다 가정입니다

?

+0

left join로 변환한다. – RedFilter

답변

1
LEFT JOIN ratings as r 
    ON r.item_id = c.item_id AND c.user_id = r.user_id 
WHERE i.item = '{$item}' 

where 절 배치 것을 조건으로 샘플 데이터를 원하는 출력을 제공 제발 inner join

+0

아름다운. 그게 다야. 'null'도 잘 작동합니다. 올바른 표시. – KickingLettuce