S.A.
acces veritabanı kullanıyorum ve sicil tablosundaki son 6 kayıtı alıp ortalamasını bulup ortalaması 90 üstü olanları ve boolen tipindeki alanda
false değerini gönderenleri bulmak istedim yalnız bir türlü yapamadım
ilginiz ve önerileriniz için teşekkürler
sıralama
Malesef izahatınızdan tablo yapısını anlayamadım. Yani son 6 kaydın ortalamasını alacagınızı soyluyorsunuz ama sonra da ortalaması 90'dan buyuk deyince bir yanlıslık var gibime geliyor... Cunku 6 kayıt icin ortalama zaten tek bir rakam uretecektir. ortalamaları 90'dan buyuk demek ise ortalama diye bir alan oldugunu cagristiriyor ama ilk soylenen ile celisiyor....
Tablo yapınızı net bir sekilde izah edebilirseniz yardımcı olmaya calisalim....
iyi çalışmalar dilerim....
Tablo yapınızı net bir sekilde izah edebilirseniz yardımcı olmaya calisalim....
iyi çalışmalar dilerim....
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

Sicil diye bir tablom var bu tabloda sicilnotu sicilyılı ve kullandı alanları var amacım son 6 yılın ortalamasını almak ve aldığım ortalamanın 90dan büyük olanları ve kullandı alanı false olanları listelemek istiyorum ama olmuyor daha doğrusu içinden bir türlü çıkamadım.
ilgileriniz ve cevaplarınız için teşekkürler.
ilgileriniz ve cevaplarınız için teşekkürler.
Delphide basit bir algoritma ile yapabilirsin
SQL ile biraz zor gibi (belkide imkansız, Select le olurmu acaba?...-fahrettin abiyi gaza getirelim-)
Son 6 kayıt:
table acılıp son kayıta Last ile gidilir.
aynı islemlerin bir benzerini (bu 6 kayıt için),yine bir dongu ile
istedigin alanı bu ort ile karsılastıracak ve boolean alanını da test edeceksin
yani mantık yukarıdaki gibi
SQL ile biraz zor gibi (belkide imkansız, Select le olurmu acaba?...-fahrettin abiyi gaza getirelim-)
Son 6 kayıt:
table acılıp son kayıta Last ile gidilir.
Kod: Tümünü seç
var
toplam,ort:Intege;
begin
toplam:=0;
table.Last;
for i:=1 to 6 do
begin
toplam:=toplam+tableALANIN.AsInteger;
table.Prior;
end;
ort:=toplam/6;
istedigin alanı bu ort ile karsılastıracak ve boolean alanını da test edeceksin
yani mantık yukarıdaki gibi
ÜŞENME,ERTELEME,VAZGEÇME
Aslında ben gazı çoktan aldım da...
Ne çare ki veritabanı access imiş... Sybase olacakti ki?
bir kac subquery desteği ile bu iş olur yani.... Ters sıralama ve first 6 anahtar kelimesi bunların ortalması bir subquery'den rahatlıkla gelir ama....
Tam veriyapısını anlayamadım. Bir de access ne kadaraını yapabilir bilemiyorum....

bir kac subquery desteği ile bu iş olur yani.... Ters sıralama ve first 6 anahtar kelimesi bunların ortalması bir subquery'den rahatlıkla gelir ama....
Tam veriyapısını anlayamadım. Bir de access ne kadaraını yapabilir bilemiyorum....
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

-
- Üye
- Mesajlar: 53
- Kayıt: 26 May 2004 11:15
- Konum: Gaziantep
- İletişim:
Merhaba,
Soruda müphem noktalar var ancak ben şansımı denemek istiyorum
Çok basit bir çözüm oldu, muhtelemen çalışmayacak
[/code]
Soruda müphem noktalar var ancak ben şansımı denemek istiyorum
Kod: Tümünü seç
SELECT Top 6 siciladi, sicilnotu
FROM tablo
HAVING avg(sicilnotu) > 90
ORDER By sicilnotu DESC

hocam kodunuz mysql üzerinde sorunsuz çalışıyor
eğer kullandı alanı sadece 2004 yılı için geçerliyse
şoyle birşey olabilirdi
malum top yerine limit kullanılıyor
bide tarihleri denemek için oyle kullandım
access da galiba subquery yok bu nedenle çalışmayacak.
eğer kullandı alanı sadece 2004 yılı için geçerliyse
şoyle birşey olabilirdi
Kod: Tümünü seç
SELECT sicil_no
FROM 3074_SICIL AS p
WHERE YIL <= 2004 AND YIL > 1998 AND
(
(
SELECT kullandi
FROM 3074_sicil
WHERE sicil_no = p.sicil_no
ORDER BY YIL DESC
LIMIT 0 , 1
) = 0
)
GROUP BY SICIL_NO
HAVING avg( NOTU ) > 90
bide tarihleri denemek için oyle kullandım
access da galiba subquery yok bu nedenle çalışmayacak.