v2.5.2
Giriş yap

Mysql JOIN de SUM işleminde problem

erencandamaroglu
437 defa görüntülendi

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.

Cevap yaz
Cevaplar (1)
erencandamaroglu
1140 gün önce
<?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.