Mysql JOIN de SUM işleminde problem
Alttaki kod örneği gibi bir kodum mevcut.
<?php
SELECT
k.*,
m.*,
c.*,
SUM(c.miktar) AS c_miktar,
k.alinacak - SUM(c.miktar) AS kalan,
k.id AS k_id,
m.id AS m_id,
c.id AS c_id
FROM kayitlar AS k
INNER JOIN musteriler AS m ON k.musteri = m.id
LEFT JOIN cari AS c ON k.kod = c.takip_kodu
?>
Sıkıntım üstteki kodu çalıştırdığım da sadece cari kaydında kaydı bulunan verilerle ilişkili verileri getirmekte.
Altta bulunan kod parçasını sildiğim de tüm kayıtları getirmekte ama orada yapmam ve filtrelemem gereken bir işleme engel olmakta.
<?php
SUM(c.miktar) AS c_miktar,
k.alinacak - SUM(c.miktar) AS kalan,
?>
Benim yapmak istediğim joinlediğim tablo içerisine carilerde bulunan kayıtları almak (ayni kayıta ait birden fazla cari kaydi olabilir) hepsini toplamak sonrasına hem toplamı bulmak hemde kayıtlarda bulunan alinacak kısmından çıkararak kalan borcu bulmak. Sonrasında da buna göre filtreleme yapmaktayım.
Umarım derdimi anlatabilmişimdir. Cevaplayacak kişilere şimdiden teşekkürler.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
<?php
SELECT
k.*,
m.*,
c.*,
(SELECT SUM(miktar) AS c_miktar FROM cari WHERE k.kod = c.takip_kodu) AS c_miktar,
(k.alinacak - (SELECT SUM(miktar) AS c_miktar FROM cari WHERE k.kod = c.takip_kodu)) AS kalan,
k.id AS k_id,
m.id AS m_id,
c.id AS c_id
FROM kayitlar AS k
INNER JOIN musteriler AS m ON k.musteri = m.id
LEFT JOIN cari AS c ON k.kod = c.takip_kodu
GROUP BY k.kod
?>
Çözümü bu şekilde buldum arkadaşlar ihtiyacı olan olur diye buraya bırakıyorum.