SELECT c.firma_adi, c.cari_tipi, 
        SUM(CASE WHEN ch.hareket_tipi = "borc" THEN ch.tutar ELSE 0 END) as toplam_borc,
        SUM(CASE WHEN ch.hareket_tipi = "alacak" THEN ch.tutar ELSE 0 END) as toplam_alacak,
        (SUM(CASE WHEN ch.hareket_tipi = "borc" THEN ch.tutar ELSE 0 END) - 
         SUM(CASE WHEN ch.hareket_tipi = "alacak" THEN ch.tutar ELSE 0 END)) as bakiye
 FROM cariler c 
 LEFT JOIN cari_hareketler ch ON c.cari_id = ch.cari_id 
 WHERE ch.tarih BETWEEN ? AND ?
 GROUP BY c.cari_id, c.firma_adi, c.cari_tipi
 ORDER BY bakiye DESC