ibquery sorgusu

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
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

ibquery sorgusu

Mesaj gönderen y.kulac »

s.a.
tablomda ADRES alanı var.
adres alanı dolu olan kayıtları listelemek istemiyorum.
sadece adres alanları boş olan kayıtları görmek istiyorum.
şöyle bir sorgulama yaptım. ama hiç kayıt dönmedi.
acaba kodda bir yanlışlık var mı?

Kod: Tümünü seç

ibquery1.Close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select * from BILGILER');
ibquery1.SQL.Add('Where NAKILADRES = ''''');
ibquery1.Open;
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: ibquery sorgusu

Mesaj gönderen aslangeri »

s.a.
adres alanı boş olan kayıtlar derken adres alanları null ise o kayıtlar gelmez.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: ibquery sorgusu

Mesaj gönderen y.kulac »

adres alanları null olan kayıtların listelenmesini istiyorum.
dolu olanlar listede görünmesin istiyorum.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: ibquery sorgusu

Mesaj gönderen emin_as »

Sorgunu aşagıdaki gibi düzenle.
null olanlar gelir.
where nakiladres is null
boş olanlar gelir
where trim(nakiladres) = ''

Hem boş hem de null olanlari getirir.
where (trim(nakiladres) ='') or (nakiladres is null)
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: ibquery sorgusu

Mesaj gönderen y.kulac »

Kod: Tümünü seç

where (trim(nakiladres) ='')

bu kod çalışmıyor hata veriyor.

ben çeşitli şekillerde denedim.

Kod: Tümünü seç

ibquery1.SQL.Add('Where trim(NAKILADRES) = ''');
ibquery1.SQL.Add('Where trim(NAKILADRES) = ''''');
bu kodlar hiç değer döndürmedi. oysa tabloda 9000 kayıt var.
bunlardan 1000 tanesinin nakiladres alanları dolu.
işte ben bu dolu olanları listede görmek istemiyorum. sadece nakiladres alanları boş olanları görmek istiyorum.

Kod: Tümünü seç

ibquery1.SQL.Add('Where NAKILADRES IS NULL');
bu kod ise çalışıyor. burda alana değer girilip sonra boşaltılırsa, bu alan yine null olur mu?
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: ibquery sorgusu

Mesaj gönderen emin_as »

Büyük ihtimal bilgi girilip, çıkılırsa null olmaz.
Trim çalışmıyorsa, sendeki firebird versiyonu 2.1 öncesi olabilir.

where (nakiladres='') or (nakiladres is null )
şeklinde de deneyebilirsin. Trim i tavsiye etmemin nedeni, trim boşlukları temizliyor, eger o alana boş karakter basılıysa trim bunları temizleyecekti. Belki kullandıgın firebird versiyonuyla ilgili farklı bir trim fonksiyonu vardır, bulabilirsen o fonksiyonu kullan.
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: ibquery sorgusu

Mesaj gönderen y.kulac »

çok teşekkür ederim.
kullandığım firebird sürümü 2.04
ama benim işimi şu kod gördü.

Kod: Tümünü seç

where nakilsdres is null
ayrıca deneme yaptım, bilgi girilip silnenen alanda yukarıdaki sorgu ile null göründü.
iyi çalışmalar dilerim.
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: ibquery sorgusu

Mesaj gönderen y.kulac »

yeni başlık açmadım burdan devam etmek istiyorum. firebird 2.04 kullanıyorum.
tablomda şu alanlar var
nakil, olu_sag, bina,

olu_sag alanı boş olanlar veya 'ÖLÜ' yazısından farklı olanlar
ve bina = Edit1.text olanlar
ve nakil alanı boş olanlar,
şöyle bir sorgu yaptım ama sonucu eksik gösteriyor. çeşitli değişiklikler yaptım yine tam sonuç vermedi.

Kod: Tümünü seç

ibquery1.Close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select * from BILGILER');
ibquery1.SQL.Add('Where OLU_SAG IS NULL');
ibquery1.SQL.Add('or OLU_SAG <> ''ÖLÜ'''');
ibquery1.SQL.Add('and BINA = '''+Edit1.Text+'''');
ibquery1.SQL.Add('and NAKIL IS NULL');
ibquery1.Open;
burda hem or hemde and kullanmak zorundayım.
işin içinden çıkamadım.
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Re: ibquery sorgusu

Mesaj gönderen deltas »

Kod: Tümünü seç

select * from bilgiler where (bina='''+edit1.text+''') and (nakil='' '') and (OLU_SAG='' '' and OLU_SAG <> ''ÖLÜ''')
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: ibquery sorgusu

Mesaj gönderen Hakan Can »

Mantıksal işlemlerin (AND, OR, <, >, <> vs.) işleniş sırasını çok iyi bilmek gerekiyor. Eğer aynı seviyede değillerse mutlaka parantez içine almak gerekiyor.

Verdiğin SQL komutunu şuna benzer düzenlemen istediğin sonucu verebilir:

Kod: Tümünü seç

SELECT
  *
FROM BILGILER
WHERE (OLU_SAG IS NULL OR OLU_SAG <> 'ÖLÜ') AND BINA = 'xxx' AND NAKIL IS NULL
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: ibquery sorgusu

Mesaj gönderen y.kulac »

çok teşekkür ederim. sanırım oldu.
or parantez içine alınması gerekiyormuş.
Cevapla