v2.5.2
Giriş yap

Mysql de iki tablodaki verileri Inner Join ile topluyorum ama iki katı veri çıkıyor!

ciftciefendi
227 defa görüntülendi

İ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;
Cevap yaz
Cevaplar (1)
gokcin
302 gün önce
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;