Mysql de iki tablodaki verileri Inner Join ile topluyorum ama iki katı veri çıkıyor!
İki tablom var, satışlar ve tahsilatlar tablosu
iki tablo birbirine musteriID ile bağlı,
satışlar tablosunda açıkHesaplar alanında bulunan tutarları ve tahsilatlarda bulunan tutar kısımlarını toplayıp ekrana basmak istiyorum. Aşağıdaki kodu yazarak çalıştırdığımda rakamların tam iki katı veri alıyorum.
Inner Join'i kaldırınca satışlarda normal rakamı alıyorum. Yorumlarınız nedir?
//SELECT
s.musteriID,SUM(s.acikHesap), s.resim,
m.musteriAd,m.musteriSoyad,m.musteriTelefon,m.musteriTc,
t.odemeTipi,SUM(t.tutar),t.tMusteriID,t.tarih
FROM satislar as s
INNER JOIN musteriler as m ON m.ID=s.musteriID
INNER JOIN tahsilatlar as t ON t.tMusteriID=s.musteriID
where s.satisTarihi and t.tarih between '2023-08-01' and '2023-11-15' AND s.subeID='2' and m.ID='322'
GROUP BY s.musteriID;
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
SELECT
s.musteriID,
m.musteriAd,
m.musteriSoyad,
m.musteriTelefon,
m.musteriTc,
t.odemeTipi,
SUM(s.acikHesap) AS toplamAcikHesap,
s.resim,
SUM(t.tutar) AS toplamTutar,
t.tMusteriID,
MAX(t.tarih) AS enSonTarih -- Tahsilat tarihleri arasında en son tarihi alır
FROM satislar AS s
INNER JOIN musteriler AS m ON m.ID = s.musteriID
INNER JOIN tahsilatlar AS t ON t.tMusteriID = s.musteriID
WHERE
s.satisTarihi BETWEEN '2023-08-01' AND '2023-11-15'
AND s.subeID = '2'
AND m.ID = '322'
GROUP BY s.musteriID, m.musteriAd, m.musteriSoyad, m.musteriTelefon, m.musteriTc, t.odemeTipi, s.resim, t.tMusteriID;