Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL query to return number 'zero' if no results

When selecting a DATE and that date does not exist in my table it currently will return an empty result set. How can I be able to return the number zero for those empty result sets instead?:

    SELECT SUM(TOTAL), SUM(5STAR), STORE, DATE
    FROM `table` WHERE DATE >= '2012-02-24' GROUP BY TOTAL

MySQL returned an empty result set (i.e. zero rows)

I want to instead return the results of the SUM(TOTAL) and SUM(5STAR) (if zero rows) as the number zero (0).

FULL TABLE STRUCTURE:

  • ID = Primary
  • DATE = UNIQUE (date)
  • STORE
  • 5STAR
  • 4STAR
  • 3STAR
  • 2STAR
  • 1STAR
  • TOTAL
  • FROM = UNIQUE
like image 873
ToddN Avatar asked Feb 28 '12 18:02

ToddN


2 Answers

Try COALESCE

SELECT COALESCE(SUM(TOTAL),0), COALESCE(SUM(5STAR),0), STORE, DATE
FROM `table` WHERE DATE >= '2012-02-24' GROUP BY TOTAL
like image 85
SenorAmor Avatar answered Oct 03 '22 05:10

SenorAmor


TRY

SELECT
       IFNULL(SUM(TOTAL), 0) AS total,
       IFNULL(SUM(5STAR), 0) AS FiveStar, 
       STORE,
       DATE
FROM `table`
WHERE DATE >= '2012-02-24'
GROUP BY TOTAL

Reference

like image 39
diEcho Avatar answered Oct 03 '22 06:10

diEcho