Mysql'da tablodaki verileri gruplara ayırarak toplama
Merhaba mysql da bir tablo oluşturdum tablo adı "musteri" tablodaki ödeme listesi "musteri_tutar" bir de ödedi,ödemedi olarak belirlediğim "musteri_durum" var
ben toplamı hesaplamak istiyorum fakat ödenen toplam ve ödenmeyen toplam olarak ayrı ayrı yazmak istiyorum.
<?php
$Fiyat=$db->prepare("SELECT SUM(musteri_tutar) AS sayi FROM musteri");
$Fiyat->execute();
$FiyatYaz= $Fiyat->fetch(PDO::FETCH_ASSOC);
echo "Toplam Para: ".$FiyatYaz['sayi']." TL";
?>
?>
yukarıdaki verdiğim kodu yazdığımda hepsinin toplamına ulaşıyorum ama yapmak istediğim ödenen ve ödenmeyenleri birbirinden ayırmak.
<?php
bla bla bla
if (bla bla) {
echo echo "Ödenen Toplam Para: ".$FiyatYaz['sayi']." TL";
}else {
echo "Ödenmeyen Toplam Para: ".$FiyatYaz['sayi']." TL";
}
?>
?>
yukarda gösterdiğime benzer bi kod yapısı olmasını istiyorum umarım kafa karıştırmamışımdır.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
bu şekildeki bir yapıda number_format($number, 2, ',', ' ') işlevini nasıl kullanabilirim .
benimde aşağıdaki şekilde sonuçları tablo şeklinde bastıran bir çalışmam var . ancak toplam sayıyı binlik ayraçlı şekilde bastıramıyorum.
foreach ($data as $item)
echo "<table border=1 cellspacing=0 cellpading=0 >
<tr> <td style='color:green' width=150px>$item[msg_S_0014]</td><td style width=150px>$item[msg_S_0785]<td style width=150px align=right >$item[stok_toplam]</font></td></tr>
</table>";
Direk senin kodunu alıntıladğım için echo echo yazmışsın görmedim büyük ihtimal onun hatasını veriyordur.
şimdi tablo id | musteri_tutar | musteri_durum
bu 3 sütündan oluşuyor ise başta büyük bir yanlışın var kullanıcıları nerde tutuyorsun sorusu çıkıyor ortaya.
Ben yapını söyle düşündüm ona göre söyledim id | musteri_id | musteri_tutar | musteri_durum
bu tablonda müşteri her borç yazdırdığında bir satır ekleniyor diye düşündüm.
Sana önerim şu müşteri durumu iptal et odenen_tutar
diye bir alan yap ödenen tutarı buraya yaz yani yapın şöyle görünecek.
id | musteri_id | musteri_tutar | odenen_tutar |
---|---|---|---|
1 | 1 | 50 | 25 |
2 | 1 | 20 | 10 |
2 | 2 | 40 | 20 |
2 | 3 | 60 | 15 |
yapın eğer böyle olur ise örnek tablo da verdiğim mesela 1
numaralı müşterinin toplam borcu 70 ₺
ödediği toplam borç miktarı ise 35 ₺
Bu mantıkta olmalı ozaman şöyle bir sorgu istediğin sonucu alabilirsin.
SELECT
SUM(musteri_tutar) as toplam_borc,
SUM(odenen_tutar) as toplam_odenen_tutar,
musteri_id
FROM
musteri
GROUP_BY musteri_id
eğer sorgun böyle olur ise bunun çıktısı sana şunu verecek
toplam_borc | toplam_odenen_tutar | musteri_id |
---|---|---|
70 | 35 | 1 |
40 | 20 | 2 |
60 | 15 | 3 |
şeklinde bir çıktı verecektir.
böylelikle hangi müşterinin ne kadar toplam borcu var ve bu borcun ne kadarını ödediğini görebilirsin.
Bunun php'de kullanımı nasıl olacak peki.
<?php
$sorgu = $db->prepare(
'SELECT SUM(musteri_tutar) as toplam_borc,
SUM(odenen_tutar) as toplam_odenen_tutar,
musteri_id
FROM musteri GROUP_BY musteri_id'
);
$sorgu->execute();
$veriler = $sorgu->fetchAll(PDO::FETCH_ASSOC);
foreach($veriler as $sutun){
echo 'Müşteri Numarası: '.$sutun['musteri_id'].PHP_EOL;
echo 'Toplam Tutar: '.$sutun['toplam_borc'].PHP_EOL;
echo 'Ödenen Toplam Tutar: '.$sutun['toplam_odenen_tutar'].'<hr>';
}
?>
Bunun çıktısı da bu şekilde;
Müşteri Numarası: 1
Toplam Tutar: 70
Ödenen Toplam Tutar: 35
Müşteri Numarası: 2
Toplam Tutar: 40
Ödenen Toplam Tutar: 20
Müşteri Numarası: 3
Toplam Tutar: 60
Ödenen Toplam Tutar: 15
Cevabın için teşekkürler ben musteri_durum sütununu warchar tanımlandığı gibi (1) yazıp yaptım dediğine göre bir tane daha sütun açmam geriyor onudamı aynı şekilde açcam kafam baya karıştı?
benim tablom bu şekilde
id | musteri_tutar | musteri_durum |
---|---|---|
1 | 50 | 1 |
2 | 75 | 0 |
1=ödedi
0=ödemedi
acaba senin demek istediğin şumu
id | musteri_tutar | musteri_odeyen | musteri_odemeyen |
---|---|---|---|
1 | 50 | 1 | 0 |
2 | 75 | 0 | 1 |
bu arada senin yaptığın kodu yazdığımda Parse error: syntax error, unexpected 'echo' (T_ECHO) in C:\xampp\htdocs\Müsteri-paneli\index.php on line 88
hatasını verdi
Merhaba,
Soru biraz eksik kalmış anlamam için yardımcı ol lütfen. Şimdi sormak istediğin şey bir Müşteri tablon bulunuyor.
Bu tablo üzerinde musteri_tutar,musteri_durum
olarak 2 adet konu ile alakalı sütün bulunuyor bu sütünların musteri_durum
olanı 0
veya 1
şeklinde ödendi, ödenmedi gibi değer tutuyor.
Bu anladığım kadarı anlamadığım kısım ise musteri_tutar
kısmı şimdi eğer musteri_durum
alanında ödendi ve ödenmedi diye değer tutacaksan ödenen tutarı da tutacak bir sütün oluşturman gerekir yada ayrı bir tablo yaparak bunu ayrıştırman gerekir.
Soruya yazdığın örnek üzerinden bir çözüm sunayım.
<?php
// İlk olarak sorgu da select ile sadece musteri_tutarını değil müsteri durumunuda alacaksın
$Fiyat=$db->prepare("SELECT SUM(musteri_tutar) AS sayi,musteri_durum FROM musteri");
$Fiyat->execute();
$FiyatYaz= $Fiyat->fetch(PDO::FETCH_ASSOC);
// daha sonra
if ($FiyatYaz['musteri_durum'] == 1) {
echo echo "Ödenen Toplam Para: ".$FiyatYaz['sayi']." TL";
}else {
echo "Ödenmeyen Toplam Para: ".$FiyatYaz['sayi']." TL";
}
Bu şekilde bunu dediğim gibi gösterdiğin örneğe göre sunuyorum eğer istediğin bu ise bu şekilde yapabilirsin.