2012-02-28 21 views
5

Bir DATE seçerken ve bu tarih benim tablosumda mevcut değil, şu anda boş bir sonuç kümesi döndürecektir. O boş bir sonuç için numarayı sıfır dönmek mümkün olabilir nasıl yerine setleri ?:MySQL sorgusu 'sıfır' dönmek için 'sıfır' sonucu yok

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) 

yerine SUM(TOTAL) ve SUM(5STAR) sonuçlarını dönmek istiyorum (eğer sıfır satır) sıfır rakamını (0).

tam bir tablo YÖNTEMİ:

  • J = Birincil
  • TARİH = TEK (tarih)
  • DEPOSU
  • 5STAR
  • 4STAR
  • 3Star
  • 2Star
  • 1STAR
  • GELEN TOPLAM
  • = EŞSİZ
+0

Tablo yapısı? –

+0

Tam tablo yapısı eklendi. Belki de alışılmalar bir soruna neden olabilir? Bunun için yeni emin değilim bu yüzden emin değilim. – ToddN

+0

Sonuç kümesinde hiç satırınız yoksa 0 s ile bir satır döndürmek istersiniz? Biraz kafam karıştı. –

cevap

0

deneyin e boş sonuç PHP tarafında ayarlanır (iade edilen satırları sayın). Veritabanında işlemek istiyorsanız, saklı yordam oluşturmalısınız.

DELIMITER $$ 

CREATE PROCEDURE `mc`.`new_routine` (IN DT DATETIME) 
BEGIN 

IF EXISTS (SELECT 1 FROM `table` WHERE DATE >= @DT) 
THEN 
    SELECT SUM(TOTAL) AS SumTotal, SUM(5STAR) AS Sum5Star, STORE, `DATE` 
    FROM `table` 
    WHERE DATE >= @DT 
    GROUP BY TOTAL; 
ELSE 
    SELECT 0 AS SumTotal, 0 AS Sum5Star, NULL AS STORE, NULL AS `DATE`; 
END IF; 

END 
8

YTL

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

+1

ayrıca "COALESCE" ile de deneyebilirsiniz – diEcho

18

Ben th işlemek için kolay olacağını düşünüyorum COALESCE

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