select verilmiş degişkeni tekrar cagırma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

select verilmiş degişkeni tekrar cagırma

Mesaj gönderen skyking »

örnek suu

SELECT *, (db_fiyat*(1-(100/isk))) as ifiyati,((select ifiyati)*1.18) kdvfiyat from dbkart

burdaki ifiyati tekrar cagıramıyorum
ama mysql de bu komut calısıyor mssqlde nasıl yapmam gerekir
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;
yukarıda yazdığınız işlemin sonucu çağırmak için mysql fart eden bişey yok zaten query ile yaptığınız varsayıyorum.
QueryIFiyat.text ile sonucu alabilrsiniz.

Umarım doğru anlamışımdır.

Yazarsanız yardımcı olmaya çalışırım.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

SELECT *, (db_fiyat*(1-(100/isk))) as ifiyati,((select ifiyati)*1.18) kdvfiyat from dbkart


burdaki ifiyat işlem sonucu turemiş bir değişken kolan alias yani
benbunu sql cumlecigin içinde bir daha işleme sokmak istiyorum ve kdvli miktar diye bir tane daha alias kolon olusturmak istiyorum

sql calsıtırdıgım zaman su hatayı veriyor

( invalid colomn name 'ifiyat') yaziyor yani tabloda ifiyat diye bir field yok ama ben bir değişken field almıstım ifiyat diye bunu tekrar işlem sokmak istiyorum yani
((select ifiyati)*1.18) as kdvfiyat oldun istiyorum

((db_fiyat*(1-(100/isk))) *1.18) as kdvfiyat yerine
kısa yoldan ifiyati*1.18 almak
anlatabildim mi
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Kod: Tümünü seç

SELECT  (db_fiyat*(1-(100/db_isk))) as ifiyati, 
(db_fiyat*(1-(100/db_isk))*1.18) as  kdvfiyati from dbkar
Şeklinde yaptığınızda sorunsuz çalışacaktır.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

bunu bende biliyorum ama alias yazarak işleme sokmak istiyorum
yani kısa yoldan halletmek istiyorum anltabildimmi

yani (dbtutar) as alias,(ailas*1.18) as dg2 gibi

yani alias adına nasıl ulasabilirim
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

select yaparken daha oluşmamış olan ifiyatı tekrar işleme tabi tutuyorsun. Bunu select içinde select kullanarak da yapabilirsin.


saygılar...
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Ms sql serverda böyle bir kullanım olmuyor maalesef. Yapabileceğiniz iki şey var, ya aynı şeyi hesaplatarak kullanacaksınız ya da view oluşturup sonra fielda verdiğiniz ismi oluşturduğunuz sql cümlesinin içinde istediğiniz kadar çağırabileceksiniz.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

naile yazdı:Ms sql serverda böyle bir kullanım olmuyor maalesef. Yapabileceğiniz iki şey var, ya aynı şeyi hesaplatarak kullanacaksınız ya da view oluşturup sonra fielda verdiğiniz ismi oluşturduğunuz sql cümlesinin içinde istediğiniz kadar çağırabileceksiniz.
Doğru Söze ne ne denir. :wink:
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Ahhh sybase ah... :D
Düştük bu MsSql in içine bu lafı daha çok diyeceğim galiba....

Select cümlemdeki uzuuuun hesapların sonuclarını tekrar bir hesaba sokup ayrı bir sutun olarak almam lazım ama nafile... Kulağımı o kadar uzun yollardan tutmam gerekiyor ki kolum yetmiyor :)

Bir umut aratayım dedim belki benim goremedigim bir yolu vardır bu işin ama bu mesajı buldum :(

Neyse hayırlısı bakalım.... Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Şuna benzer bir yaklaşımla isteklerinizi gerçekleştirebilirsiniz:

Kod: Tümünü seç

SELECT
  T1.OCK AS OCAK,
  T1.SBT AS SUBAT,
  T1.OCK + T1.SBT AS OCAK_ARTI_SUBAT,
  T1.OCK * T1.SBT AS OCAK_CARPI_SUBAT
FROM
  (SELECT SUM(OCAK) AS OCK, SUM(SUBAT) AS SBT FROM NET_MIKTAR) T1
Bunu iç içe istediğiniz kadar derinleştirebilirsiniz. Yani NET_MIKTAR yerine de (SELECT ...) yazabilirsiniz.

Aslında bu özellik VIEW kullanımını çoğu yerde gereksiz kılacak bir özellik (ve de güzellik). Benim FireBird'de keşke olsa diye hep beklediğim bir özellikti bu. Şimdilik yok. Belki 2.0'da FireBird'e de konur.

Fahrettin bey, sabırlı olun. Benim düşüncem özetle:
(MS SQL <= ORACLE) AND (MS SQL > Diğer VT'ler * 10^4930) :lol:

İyi çalışmalar.
Cevapla