Nasıl tarihe göre bir grup yaparken MySQL boş gün geri dönmek için?

1 Cevap php

Ben böyle bir MySQL sorgusu vardır:

SELECT DAYNAME(CreatedAt) AS TheDay, SUM(Amount) AS TheSum
FROM OrderTransactions
GROUP BY TheDay

# Returns an array like:
# Array
# (
#     [0] => Array
#         (
#             [TheDay] => Thursday
#             [TheSum] => 0.02
#         )
# 
#     [1] => Array
#         (
#             [TheDay] => Wednesday
#             [TheSum] => 0.02
#         )
# 
# )

Ben de geçen hafta yapılan işlemleri seçmek için orada bir madde var. Herhangi bir işlem olsa belirli günlerde orada olsaydı, nasıl hala her boş gün için 0,00 $ miktar iade yapabilirsiniz?

1 Cevap

Genellikle burada tekniği seçtiğiniz ne tersi ile BİRLİĞİ etmektir.

Eğer alandaki değerlerin Pazartesi 'ile bir tablo dayNames,' Salı '...' Pazar 'var name söylüyorlar.

SELECT DAYNAME(CreatedAt) AS TheDay, SUM(Amount) AS TheSum
  FROM OrderTransactions
  GROUP BY TheDay
UNION
SELECT `name`, 0 FROM daynames
  WHERE daynames.name NOT IN (SELECT DISTINCT DAYNAME(CreatedAt) FROM OrderTransactions)

Eğer tarih fonksiyonları yok olduğunda, normalde dayNames arama masa gerekmez. Bu durumda, bunu önlemek için kısayol bilmiyorum.