Ben tarihleri ve değerleri ile foo bir ana tablo var, ve bir tablo bar istisna tarihleri ve değerleri ile. Tarih bar tablo varsa, bu değer, aksi takdirde, varsayılan foo değeri geçerlidir. Bu nedenle, örneğin:
foo id date value 1 2009-11-19 25 2 2009-11-20 50 bar id date value 1 2009-11-19 50
To select the right values I use the following type of query:
SELECT
f.date,
IF (f.date = b.date, b.value, f.value) AS value
FROM foo f
LEFT JOIN bar b
ON b.date = f.date
This works fine. The date "2009-11-19" exists in bar, so it selects the 50-value. But now I'd like to GROUP the results by MONTH, using this query:
SELECT
MONTH(f.date) AS month,
IF (f.date = b.date, b.value, f.value) AS value
FROM foo f
LEFT JOIN bar b
ON b.date = f.date
GROUP BY month
Şimdi aya göre sonuç verir, böylece gruplama çalışıyor. Ancak, şimdi bar değerlerini yok sayar ve onu hiç bir eşleştirme yapmaz görünüyor. Ay için toplam 100 yerine 75 (foo foo + 50 25) (50 foo bar + 50) 'dir.
Bu işi yapmak için bir yolu var mı? Orada iki tablo arasında bir maç var, o aya göre gruplandırılarak sonra eğer doğru değerleri seçer? Böylece Ben ilk sorgu kullanın ve daha sonra PHP gruplandırma yapmak, ama bunun mümkün olmadığını düz MySQL doğru sonuçlar almak istiyorum olabilir.