2014-10-29 3 views
0

5 개의 검토 사이트에 대한 데이터를 확인하고 site_id, review_count & review_average를 반환하는 쿼리가 있습니다.mysql 쿼리에 결과가없는 경우 공백 데이터를 채우십시오.

리뷰 사이트에 대한 데이터가없는 경우 평균 &에 대해 0을 반환하고 싶습니다.

mysql 쿼리에서 가능합니까?

MySQL의 :

SELECT rrss.review_site_id,rrss.review_count,rrss.review_average,rs.name 
FROM rooftops_review_sites_snapshots rrss 
LEFT JOIN review_sites rs ON rrss.review_site_id = rs.id 
WHERE rrss.rooftop_id = 185 
AND rrss.import_id = 16 
AND rrss.review_site_id IN (31,30,12,10,29) 

전류 출력 :

Array 
(
[google] => Array 
    (
     [review_site_id] => 31 
     [review_count] => 24 
     [review_average] => 3.80 
    ) 

[edmunds] => Array 
    (
     [review_site_id] => 12 
     [review_count] => 8 
     [review_average] => 4.50 
    ) 

) 

원하는 출력 :

Array 
(
[google] => Array 
    (
     [review_site_id] => 31 
     [review_count] => 24 
     [review_average] => 3.80 
    ) 

[edmunds] => Array 
    (
     [review_site_id] => 12 
     [review_count] => 8 
     [review_average] => 4.50 
    ) 
[yelp] => Array 
    (
     [review_site_id] => 31 
     [review_count] => 0 
     [review_average] => 0 
    ) 

[dealerrater] => Array 
    (
     [review_site_id] => 12 
     [review_count] => 0 
     [review_average] => 0 
    ) 
[cars] => Array 
    (
     [review_site_id] => 12 
     [review_count] => 0 
     [review_average] => 0 
    ) 

) 
+1

, 술어로 전환하고'LEFT JOIN'에 다른 테이블을 사용합니다. –

답변

0

TRY이

SELECT 
rrss.review_site_id, 
ISNULL(rrss.review_count, 0), 
ISNULL(rrss.review_average, 0), 
rs.name 

FROM rooftops_review_sites_snapshots rrss 

LEFT OUTER JOIN review_sites rs 
ON rrss.review_site_id = rs.id 

WHERE rrss.rooftop_id = 185 
AND rrss.import_id = 16 
AND rrss.review_site_id IN (31,30,12,10,29) 
0

변경하여 테이블의 위치와 ISNULL()를 사용합니다. 아래 쿼리를 확인하십시오. 모든 사이트가`review_sites` 테이블에있는 경우

SELECT rs.id,rs.name, ISNULL(rrss.review_count, 0), ISNULL(rrss.review_average, 0) FROM review_sites rs LEFT JOIN rooftops_review_sites_snapshots rrss ON rrss.review_site_id = rs.id WHERE rrss.rooftop_id = 185 AND rrss.import_id = 16 AND rrss.review_site_id IN (31,30,12,10,29) 
관련 문제