【问题标题】:Fill in blank data if no result found in mysql querymysql查询未找到结果填空数据
【发布时间】:2014-12-25 21:17:55
【问题描述】:

我有一个查询,它正在检查 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
    )

)

【问题讨论】:

  • 如果review_sites表中存在所有站点,则将其切换到谓词并使用LEFT JOIN中的另一个表。

标签: php mysql not-exists ifnull


【解决方案1】:

试试这个

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)

【讨论】:

    【解决方案2】:

    更改表的位置并使用 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)
    

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2017-12-24
      • 2012-07-30
      • 2016-03-12
      • 1970-01-01
      相关资源
      最近更新 更多