bir sorgu sonucunu bir alanla iliskilendirme

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
eternity
Üye
Mesajlar: 21
Kayıt: 05 Tem 2004 09:56
Konum: Ankara

bir sorgu sonucunu bir alanla iliskilendirme

Mesaj gönderen eternity »

merhabalar

sorunum icin daha baslik bile bulamadim ama umarim bir yapilma yolu vardir :roll:
bir basvuru tablom var (TBLBASVURU) bir basvuru red nedenleri tablom var (TBLBASVURURED) bir de red nedenlerininin tanimlandigi tablom var (TBLREDTANIM) icerikleri su sekilde olsun :

//////////////////////////////////
TBLBASVURU
-----------------
BID AD
------- --------
1 Ahmet Kasap
2 Ayşe Manav
//////////////////////////////////
TBLREDTANIM
-----------------
REDID REDAD
------- --------
1 Diploma Yok
2 Nüfus Cüzdanı Yok
//////////////////////////////////
TBLBASVURURED
-----------------
BID REDID DURUM
------- -------- ---------
1 1 TRUE
1 2 FALSE
2 1 TRUE
2 2 TRUE
//////////////////////////////////
Aşağıdaki gibi bir sonuç üretecek bir sorguyu yazabilirsem eğer nasıl yazarım :

1 Ahmet Kasap Diploma Yok
2 Ayşe Manav Diploma Yok , Nüfus Cüzdanı Yok

İlgilenen arkadaşlara şimdiden teşekkürler :)
onaydin

Mesaj gönderen onaydin »

Merhaba
Böyle bir döngüyü select ile oluşturamazsınız. Stored procedure kullanıp
içinde for select kullanarak bu şekilde bir alanın içini doldurabilirsiniz.
eternity
Üye
Mesajlar: 21
Kayıt: 05 Tem 2004 09:56
Konum: Ankara

Mesaj gönderen eternity »

Peki Sql Server'da nasil yazarım :?:
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Mesaja cevap yazmak için bayağı gecikmişim ama, başka bir arkadaşın işine yarar diye yazıyorum. Delphi offline da tesadüfen bu mesajı görmüştüm.

Stored procedure olarak ben bakmadım ama programınızın yapısında bir değişiklik yaparak farklı bir şekilde alabilirsiniz sonucu.
Veri tabanına ek bir alan eklersiniz.

Programınızda checkbox kullanıyorsanız bunların onexit eventına

Kod: Tümünü seç

{Bu diploma yok için } 
if checkbox1.checked then 
      sayi:=sayi or 1
     else
        sayi:=sayi and 254;


Kod: Tümünü seç

{Bu Nüfus cüzdanı yok için } 
if checkbox2.checked then 
      sayi:=sayi or 2
     else
        sayi:=sayi and 253;


Bu şekilde sayıyı alıp kaydedersiniz.

Sorgulama için de rfunc fonksiyonlarından Bitand i kullanırsınız. Yukarıdaki verilere göre



Kod: Tümünü seç

   Select sayi, 
      case bitand(sayi,255)
         when 1 then 'Diploma yok '
         when  2 then 'Nüfus Cüzdanı Yok'
         when  3 then 'Diploma yok, Nüfus Cüzdanı yok'
         when  4 then 'dört'
      end
   as   Durum
    from Tblbasvurured
gibi bir kodla istediğinizi alabilirsiniz.


Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Cevapla