SQL select MAX(date)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
jafari1983
Üye
Mesajlar: 44
Kayıt: 05 Eyl 2010 10:32

SQL select MAX(date)

Mesaj gönderen jafari1983 »

Salamun aleykum kardeşler. Delfide küçük mağaza programı hazırladım, ama bir meselede takıldım. (ADO+MS Access)

diyelim ki, bu depoda olan mallarım

..isim..|.......tarih.......|..fiyat...|

|_elma_|_01.01.2010____|_5_____|
|_elma_|_10.01.2010____|_4_____|
|_muz_|_02.01.2010_____|_2____|
|_muz_|_04.01.2010_____|_8____|

ben bu malların report-nu çikarmalıyım, neticenin aşağıdaki gibi olmasını istiyorum. Yani malların karşısında sadece en son tarihte alınmış fiyatlar olsun.

..isim..|.......tarih.......|..fiyat...|

|_elma_|_10.01.2010____|_4_____|
|_muz_|_04.01.2010_____|_8____|

Kod: Tümünü seç

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select isim, fiyat, MAX(tarih) from table1 GROUP BY ad');
ADOQuery1.Open;
aklıma bu kod geliyor, bunu yazınca error mesajı alıyorum

Geçen defa bu form çok yardımcı oldu bize, Allah sizden razı olsun.
Önceden teşekkürler...
"Əlini (ə.) şah, Muhammədi (s.) padişah bilməyən Allahı da tanımaz!"
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: SQL select MAX(date)

Mesaj gönderen orhancc »

Bu queryi kendine uyarla sorunun çözülmesi lazım

Kod: Tümünü seç

SELECT tt.*
FROM topten tt
INNER JOIN
    (
    SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home
    ) groupedtt ON tt.home = groupedtt.home AND tt.datetime = groupedtt.MaxDateTime

Kullanıcı avatarı
jafari1983
Üye
Mesajlar: 44
Kayıt: 05 Eyl 2010 10:32

Re: SQL select MAX(date)

Mesaj gönderen jafari1983 »

Orhan kardeş, çok teşekkür ederim. Sorun çözüldü. Ama bir ricam daha olacak

..isim..|.......tarih.......|..fiyat...|....miktar...|

|_elma_|_01.01.2010____|_5_____|___1_____|
|_elma_|_10.01.2010____|_4_____|___1_____|
|_muz_|_02.01.2010_____|_2____|____1_____|
|_muz_|_04.01.2010_____|_8____|____1_____|

ben miktar fiedl`ni ilave ettim, onu toplamak mümkün mü acaba ? SUM(miktar)

yani, hem son tarihle fiyatlarını seçsin, hem isimlerini hem de önlerinden cem miktarını yazsın.
"Əlini (ə.) şah, Muhammədi (s.) padişah bilməyən Allahı da tanımaz!"
Kullanıcı avatarı
jafari1983
Üye
Mesajlar: 44
Kayıt: 05 Eyl 2010 10:32

Re: SQL select MAX(date)

Mesaj gönderen jafari1983 »

???
"Əlini (ə.) şah, Muhammədi (s.) padişah bilməyən Allahı da tanımaz!"
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: SQL select MAX(date)

Mesaj gönderen conari »

oluşturduğunuz cümleyi yazın. onun üstüne ekleyelim.
sub query gerekebilir.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: SQL select MAX(date)

Mesaj gönderen mrmarman »

Kod: Tümünü seç

ADOQuery1.SQL.Add('select T1.isim, MAX(fiyat) as fiyat, MAX(tarih) as tarih, ( SELECT SUM(T2.miktar) FROM Table1 T2 WHERE T2.isim = t1.isim) as miktar from Table1 T1 GROUP BY isim');
şeklinde bir deneyin. Denemedim buradan spontan yazıyorum... Muhtemelen aldığınız hata GROUP BY verdiğiniz alan adı SELECT satırındakilerden eksik/farklı olduğundandır. MAX ifadesi Group By ifadesi için o field'ı muaf kılar.
Resim
Resim ....Resim
Kullanıcı avatarı
jafari1983
Üye
Mesajlar: 44
Kayıt: 05 Eyl 2010 10:32

Re: SQL select MAX(date)

Mesaj gönderen jafari1983 »

Cevaplarınız için teşekkür ederim. Benim istediğim şey tam olarak o değil

mal isimleri
toplam sayısı
en son alış tarihi
ve en son alış tarihine uygun fiyatları

sizin verdiğiniz örenk çalışıyor, ama en yüksek fiyatları seçiyor. Benin istediğim en yüksek fiyatlar deyil, en son fiyatlar. SQL Server 2005-te ben onu yapa biliyorum. Ama Access-te problem çıkıyor

Ben size SQL Server-da verdigim komutu yazım, siz bana access-e dönüştürmem için yardım edin...

Kod: Tümünü seç

SELECT t.isim, SUM(t.miktar) AS toplammiktar, 
(SELECT fiyat from table1 WHERE isim=t.isim AND tarih=MAX(t.tarih)) AS tarih, MAX(t.tarih) AS SonAlisTarihi FROM table1
GROUP BY t.isim
Teşekkür ediyorum hepinize
"Əlini (ə.) şah, Muhammədi (s.) padişah bilməyən Allahı da tanımaz!"
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: SQL select MAX(date)

Mesaj gönderen forumsad »

Kod: Tümünü seç

DMoyunKaydet.ADOQuerySave.Close;
DMoyunKaydet.ADOQuerySave.SQL.Clear;
DMoyunKaydet.ADOQuerySave.SQL.Add('select MAX(ID) AS ID from tblOyunlar');
DMoyunKaydet.ADOQuerySave.Open;

SonId:=DMoyunKaydet.ADOQuerySave.FieldByName('ID').AsInteger;
,

hocam bu şekilde ID nin son kayıt numarasını alabiliyorum

çok teşekkürler
Cevapla