birkaç acemi sql sorusu..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
birkaç acemi sql sorusu..
arkadaşlar paradox vt kullanıyorum.yapmak istediğim şey basit aslında ama olmuyor.
ana tablomda tüm işlemlerin kaydı tutuluyor.tüm satışların yani.
ben bi rapor gibi bişey sunmak istiyorum. amacım girilen ay daki satışları listelemek.
vt de tarih kolonundaki kayıtlardan ay kısmı 12 olanları mesela..
birde mesela bunu yaptım. 12. aydaki tüm satışları listeledim. peki bu aydaki yapılan satışların sayısını nasıl alabilirim. bu ayda 180 adet satış olmuştur. toplam giriş 1450 ytl dir gibi yapıcam mesela.
bu iki sorguyu nasıl yaparım yardım edermisiniz.
teşekkür ederim.
ana tablomda tüm işlemlerin kaydı tutuluyor.tüm satışların yani.
ben bi rapor gibi bişey sunmak istiyorum. amacım girilen ay daki satışları listelemek.
vt de tarih kolonundaki kayıtlardan ay kısmı 12 olanları mesela..
birde mesela bunu yaptım. 12. aydaki tüm satışları listeledim. peki bu aydaki yapılan satışların sayısını nasıl alabilirim. bu ayda 180 adet satış olmuştur. toplam giriş 1450 ytl dir gibi yapıcam mesela.
bu iki sorguyu nasıl yaparım yardım edermisiniz.
teşekkür ederim.
Parakoks için LocalSql diye bir yardım dosyası olacak oradan desteklediği sql yapısına bakabilirsiniz.
İlgili aydaki bilgileri listelemek için; şeklinde sabit sql ile yapabileceğiniz gibi.. ile şeklinde parametrik bir yapı ile yapabilirsiniz. Ay bilgisini tarih bilgisinden alacaksanız EXTRACT(MONTH FROM Tarih_Alani) ile ay bilgisini çekilebilirsiniz. Sonuçta sorgu şu şekilde olacak;
Diğer soruda bunların toplamı için ile
Kayıt sayısını da ile alabilirsin. Tabi burada where kısmını da yazarak 
İlgili aydaki bilgileri listelemek için;
Kod: Tümünü seç
select * from tablo
where ay = 12
Kod: Tümünü seç
select * from tablo
where ay = :AY
Kod: Tümünü seç
Query1.ParamByName('AY').AsInteger := 12;
Query1.Open;
Kod: Tümünü seç
select * from tablo
where EXTRACT(MONTH FROM Tarih_Alani) = :AY
Kod: Tümünü seç
select SUM(satis_tutari) from ...
Kayıt sayısını da
Kod: Tümünü seç
select count(*) from ...

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
çok teşekkür ederim hocam. ellerine sağlık.
ben şunu denedim bide: mesela 12. ay listesi sitenildi. ben sorguda
gibi sorgulattım aynı sonucu werdi. hangisi daha sağlıklı olur sizce.
bi farkı olurmu yani?
ben şunu denedim bide: mesela 12. ay listesi sitenildi. ben sorguda
Kod: Tümünü seç
tarih_alani>01.12.2006 and tarih_alani<31.12.2006
bi farkı olurmu yani?
Kod: Tümünü seç
procedure TForm8.Button1Click(Sender: TObject);
var
sqlstatement21:string;
tarih1:string;
tarih2:string;
begin
EDIT2.Text:=INTTOSTR(DaysInAMonth(strtoint(edit4.Text),strtoint(edit3.Text)))+'.'+edit3.Text+'.2006';
edit1.text:='01.'+edit3.Text+'.'+edit4.Text;
tarih1:=edit1.text;
tarih2:=edit2.text;
sqlstatement21:=FORMAT('SELECT * FROM eylul WHERE G_tar> %s AND G_tar< %s or G_tar= %s or G_tar= %s',[''''+tarih1+'''',''''+tarih2+'''',''''+tarih1+'''',''''+tarih2+'''']);
QUERY1.Close;
QUERY1.SQL.Clear;
QUERY1.SQL.Add(sqlstatement21);
query1.Open;
end;
En son interboy tarafından 07 Ağu 2006 04:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
teşekkür ederim hocam yıl bilgisinide kullanıcıdan alarak tekrar düzenledim.
yalnız hocam
bu şekilde hata weriyor. iki nokta yı kaldırınca kabul ediyor ancak.(=YIL)
selametle..
yalnız hocam
Kod: Tümünü seç
EXTRACT(YEAR FROM Tarih_Alani) = :YIL
selametle..
Değişkenin önündeki iki nokta üst üste bunun dışarıdan gelen bir parametre olduğunu gösterir. Yani şeklinde olmalı 
Verdiği hata metnini yazarsan neye itiraz ettiğini anlayabiliriz belki
Kod: Tümünü seç
select * from tablo
where extract(year from tarih_alani) = :YIL and extract(month from tarih_alani) = :AY

Verdiği hata metnini yazarsan neye itiraz ettiğini anlayabiliriz belki

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
benzer bi soru daha..
hocam yine buna benzer bi sorunla karşılaştm ve yeni konu açmaya gerek yok die burda yazıyorum:
yeni hedefim
şu:
tüm satışların tutulduğu bir tablom wardı ya. işte o tablo yu grafiğe dökücem.aylara göre kaç satış olduğunu çizdiricem.
yani bana gereken tablo şöyle olcak:
şöyle bi sorgu kullanmaya yeltendim:
fakat 'invalid field name: AY' hatası aldım.
AY alanı yerine tablodaki tarih alanımı kullanınca (group by g_tar) 'expressions in group by are not supported' gibi bi hata aldım.
nasıl bi sorgu kullanmalıyım?
tşk..
yeni hedefim

tüm satışların tutulduğu bir tablom wardı ya. işte o tablo yu grafiğe dökücem.aylara göre kaç satış olduğunu çizdiricem.
yani bana gereken tablo şöyle olcak:
Kod: Tümünü seç
01 | 02 | 03 | 04 | ... | 12 | --> aylar
-------------------------------
1208| 1400 | 3000 | 1100 | ... | 580 | --> satış adedi
şöyle bi sorgu kullanmaya yeltendim:
Kod: Tümünü seç
SELECT COUNT(*) AS ISLEM, EXTRACT(MONTH FROM G_TAR) AS AY
FROM EYLUL
WHERE EXTRACT(YEAR FROM G_TAR)='2006'
GROUP BY AY
AY alanı yerine tablodaki tarih alanımı kullanınca (group by g_tar) 'expressions in group by are not supported' gibi bi hata aldım.
nasıl bi sorgu kullanmalıyım?
tşk..
önerin için tşk ederim dostum. zaten küçük uygulamalarda paradox kullanıyorum sadece. firebird kullanıyorum diğerlerinde. ama firebird de yeniyim. geliştiriyorum bi yandan kendimi. bu uygulama bas,t bi rent a car uygulaması. cok fazla kayıt girilmeyecek. el alışkanlığıda olduu için paradox yapıwerdim.
tşk. ederim.
bide yukarıdaki sorum hakkında yardım ederseniz sewinirim.(iki cewap yukarda)
selametle..
tşk. ederim.
bide yukarıdaki sorum hakkında yardım ederseniz sewinirim.(iki cewap yukarda)
selametle..
interboy yazdı:teşekkür ederim hocam yıl bilgisinide kullanıcıdan alarak tekrar düzenledim.
yalnız hocam
bu şekilde hata weriyor. iki nokta yı kaldırınca kabul ediyor ancak.(=YIL)Kod: Tümünü seç
EXTRACT(YEAR FROM Tarih_Alani) = :YIL
selametle..
=: dan sonra parametre aktarman gerekli. yani
sql.add.('select **............. extrract .=:yıl'
yazdıktan sonra
query.parameterbyname('yıl').value:='12' gibi
herhalde ben sorunu anlamadım ?
sorum şu hocam:
hocam yine buna benzer bi sorunla karşılaştm ve yeni konu açmaya gerek yok die burda yazıyorum:
yeni hedefim şu:
tüm satışların tutulduğu bir tablom wardı ya. işte o tablo yu grafiğe dökücem.aylara göre kaç satış olduğunu çizdiricem.
yani bana gereken tablo şöyle olcak:
Kod:
01 | 02 | 03 | 04 | ... | 12 | --> aylar
-------------------------------
1208| 1400 | 3000 | 1100 | ... | 580 | --> satış adedi
şöyle bi sorgu kullanmaya yeltendim:
Kod:
SELECT COUNT(*) AS ISLEM, EXTRACT(MONTH FROM G_TAR) AS AY
FROM EYLUL
WHERE EXTRACT(YEAR FROM G_TAR)='2006'
GROUP BY AY
fakat 'invalid field name: AY' hatası aldım.
AY alanı yerine tablodaki tarih alanımı kullanınca (group by g_tar) 'expressions in group by are not supported' gibi bi hata aldım.
nasıl bi sorgu kullanmalıyım?
tşk..
arkadasım ilk olarak şunu belirteyim. burdaki ki cevapların doğruluğunu kimse garanti etmiyor. ikincisi bende yeniyim. ve ogrendiğim herşeyi paylaşmak için elimden geleni yapıyorum. daha once group bye terimini hiç kullanmadım. ama buna benzer olarak bi karşılaştığım sorunda extract (year ...)='2006' yazdığın noktayı ..=:yil olarak değiştirip program içerisinden bi parametre gondererek belki bir sonuca ulaşabilirsin. çünkü buna benzer bir sorunla karşılşmıştım. her şey mantıken uygun geliyordu.ben de problemi boyle çözmüştüm.