2010-05-10 10 views
5

मैं SELECT कथन GROUP BY खंड के साथ बनाने का प्रयास कर रहा हूं, जिसे "डिफ़ॉल्ट मान" वापस करना चाहिए।"डिफ़ॉल्ट मान" के साथ SQL ग्रुप BY

निम्नलिखित सरल MySQL तालिका कल्पना कीजिए:

CREATE TABLE `tracker` (
    `id` INTEGER PRIMARY KEY auto_increment, 
    `date` DATETIME NOT NULL, 
    `customer_id` INTEGER NOT NULL 
); 

तालिका केवल एक ही रिकॉर्ड में शामिल हैं:

INSERT INTO `tracker` (`date`, `customer_id`) VALUES('2010-05-03', 1); 

वार्डों मैं निम्नलिखित SQL क्वेरी को क्रियान्वित कर रहा हूँ के बाद:

SELECT DATE(`date`), COUNT(customer_id) FROM tracker 
WHERE DATE(`date`) >= '2010-05-01' AND DATE(`date`) <= '2010-05-05' 
GROUP BY DATE(`date`) ORDER BY DATE(`date`); 

और अपेक्षित परिणाम सेट प्राप्त करें:

+--------------+--------------------+ 
| DATE(`date`) | COUNT(customer_id) | 
+--------------+--------------------+ 
| 2010-05-01 |     0 | 
| 2010-05-02 |     0 | 
| 2010-05-03 |     1 | 
| 2010-05-04 |     0 | 
| 2010-05-05 |     0 | 
+--------------+--------------------+ 

यह इस व्यवहार को प्राप्त करना संभव है:

+----+---------------------+-------------+ 
| id | date    | customer_id | 
+----+---------------------+-------------+ 
| 1 | 2010-05-10 00:00:00 |   1 | 
+----+---------------------+-------------+ 

हालांकि, मैं परिणाम इस तरह देखने के लिए सेट चाहते हैं?

+2

पर परिणाम पर एक group by, या

  • group by कर करो इस विषय के साथ बहुत सारे डुप्लिकेट हैं, उदाहरण के लिए http://stackoverflow.com/questions/400759/sql-group-by-date-but-get-dates-wo-rec ords भी – Unreason

  • उत्तर

    3

    आप रेंज में मान्य तिथियों का एक अस्थायी तालिका का निर्माण कर सकता है और उसके बाद शामिल है जो आपकी क्वेरी में - कि आगे है कि मैं तुरंत देख सकते हैं एक ही रास्ता के बारे में है ...

    मार्टिन

    1

    मार्टिन के रूप में ने कहा, सबसे अच्छा समाधान तारीखों के साथ एक temp तालिका बनाने के लिए है।

    तो फिर वहाँ 2 दृष्टिकोण है:

    • एक बाहरी कि अस्थायी तालिका के साथ शामिल होने और मूल तालिका + UNION select date,0 as count from date_table d where not exists (select 1 from customer c where c.date=d.date)

    संबंधित मुद्दे