v2.5.2
Giriş yap

Php ile mysqlden 3 tablodan Veri çekme ve 2 tablonun toplamını almak hk!

ozcan
236 defa görüntülendi

Merhaba,

İlişkisel veritabanı tablosu oluşturdum ve detaylar aşağıdaki gibidir.

musteriler (Müşteri bilgilerini olduğu)
satislar (satış işlemlerini tutar girerek yapılyorum, ürünler yok! Müşteri tablosuna musteriID ile ilişkili)
tahsilatlar (Açık hesapların tutulduğu alan satışlar kısmı, tahsilatları musteriID olarak kayıt işlemi yapılıyor buraya, musteriID ilişkisel alan)

Rapor ekranı hazırladım, sorguyla alanları getiriyorum ama akrana bastığım zaman rakamlar 2 katı çıkıyor.
Yardımınıza ihtiyacım var.

    //  
  $sube= $_POST['magaza'];
  $satis=$baglan->prepare("SELECT 
                          satislar.musteriID,
                          satislar.satisTarihi,
                          satislar.subeID,
                          satislar.acikHesap as cariToplam,
                          subeler.ID as subeID,
                          subeler.aciklama,
                          musteriler.musteriAd,
                          sum(t.tutar) as tahsilat

                          FROM satislar
                          
                          INNER JOIN musteriler ON satislar.musteriID=musteriler.ID
                           INNER JOIN subeler ON satislar.subeID=subeler.ID
                           INNER JOIN tahsilatlar as t ON satislar.musteriID=t.tMusteriID
                           where  satislar.satisTarihi between ? and ? AND satislar.subeID='{$sube}' 
                           AND satislar.acikHesap > 0 
                           GROUP BY satislar.musteriID 
                            "); 
                   $satis->execute(array($basTarihi,$bitTarihi,));
   
                while($satislariGetir=$satis->fetch(PDO::FETCH_ASSOC)){
                $resim=$satislariGetir['resim'];
                $TC=$satislariGetir['musteriTc'];
                $ID=$satislariGetir['tMusteriID'];
                $mAd=$satislariGetir['musteriAd'];
                $mTelefon=$satislariGetir['musteriTelefon'];
                $acikHesapToplam2+=$satislariGetir['cariToplam'];
                $tahsilat=$satislariGetir['tahsilat'];
              

h4ckdr0
668 gün önce

Eğer sorgunuzda "GROUP BY satislar.musteriID" komutunu kullandıysanız ve hala rakamlar 2 katı çıkıyorsa, bu durumda $acikHesapToplam2 değişkenini sorgu sonucunu döngü içinde gezerek her satır için tek tek eklemeniz gerektiği anlamına gelir.

while($satislariGetir=$satis->fetch(PDO::FETCH_ASSOC)){
    $acikHesapToplam2 += $satislariGetir['cariToplam'];
    // ...
}

Yukarıdaki kod, her satır için cariToplam değerini $acikHesapToplam2 değişkenine ekleyecektir.

Ayrıca, sorgunuzda "GROUP BY satislar.musteriID" komutunu kullanarak satışları gruplandırmanız gerekmektedir. Ancak sorgunuzda acikHesapToplam2 değişkenini satislar tablosunda acikHesap alanından alıyorsunuz. Bu nedenle sorgunuzda acikHesapToplam2 değişkenini satislar tablosunda acikHesap alanının toplamını almak için SUM fonksiyonunu kullanmanız gerekmektedir.

SELECT SUM(satislar.acikHesap) as acikHesapToplam2 
FROM satislar
INNER JOIN musteriler ON satislar.musteriID=musteriler.ID
INNER JOIN subeler ON satislar.subeID=subeler.ID
INNER JOIN tahsilatlar as t ON satislar.musteriID=t.tMusteriID
where  satislar.satisTarihi between ? and ? AND satislar.subeID='{$sube}' 
AND satislar.acikHesap > 0 
GROUP BY satislar.musteriID 

Bu şekilde sorgunuzda acikHesapToplam2 değişkeni satislar tablosunda acikHesap alanının toplamını verecektir.