Заполните пустые данные, если в запросе MySQL ничего не найдено

У меня есть запрос, который проверяет данные для 5 сайтов отзывов и возвращает site_id, review_count & review_average.

Если нет данных для обзора сайта, то я хочу вернуть 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
)

)

0

Решение

ПОПРОБУЙ ЭТО

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 (). Проверьте запрос ниже.

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)
0

По вопросам рекламы [email protected]