Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
Merhaba, SQL kullanarak son yapılan ödemeyi yazdırmak istiyorum.

Açık 1 Cevaplar 640 Gösterim Veri Tabanı

İki adet tablo var 1.Tablo 'Kisiler'  - 2.Tablo 'Odemeler'

SQL kullanarak kişiye yapılan son ödemeyi forma yazdırmak istiyorum.

Form üzerinden kişinin detayına girildiği zaman yapılan tüm ödemeler görülmektedir. (Resim-1)

Resim-2'de kişiye yapılan sadece son yardımı görmek istiyorum.  

1 cevap

0

Selamlar Mustafa,

Birkaç alt sorgu atman gerekiyor. Sırayla gidelim.

En son kaydı bulmak için 

 
select max(tarih), id from Odemeler group by id

Bunu kişi bazına indirmek istersen odeme kişisini bir parametre ile ataman lazım.

select max(tarih), id from Odemeler where odeme.kisi = #kisi_numarası# group by id

Son ödemenin tarihini ve id bilgisini şu an elde etmiş olmalısın. Bunu kendisi ile join atıp bütün bilgiyi alabilirsin.

select odeme.* from 
   Odemeler odeme
inner join 
    (select max(tarih), id
         from Odemeler 
       where odeme.kisi = #kisi_numarası# 
       group by id) en_son
   on odeme.id = en_son.id

Özetlemek gerekirse. Öncelikle son kaydı bulan sorguyu yazıyorsun. O sorguyu normal sorgunla join yaparak ilk sorgudan aldığın id değeriyle eşlersin.

Eğer programlama dili ile kullanıyorsan iki sorgu çekip daha kolay iş yapabilirsin. 

Mesela 

select * from odemeler where kisi = #XX# order by tarih desc

Bu sorgu sana zaten tarihe göre sıralanmış olarak bir kişiye ait olan ödemeleri getirir. Bunun birinci değerini bi değişkene atarsın. Başka bir sorgu ile atadığın değer üzerinden alabilirsin.

select * from odemeler where id = #XX#

İyi çalışmalar

(5.5k puan)