Firebird sql in limit and or limit

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ı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Firebird sql in limit and or limit

Mesaj gönderen greenegitim »

Merhaba arkadaşlar,
Şöyle bir şeye ihtiyacım oldu

SELECT MIN(ID) AS ID FROM TABLE GROUP BY COL1;
id | col1 |
1 | x |
2 | y |
3 | z |

gelen idlerin bulunduğu kayıtlarda ki islendimi integer alanını update ile 0 yapmam gerekiyor
UPDATE TABLE SET islendimi = 0 WHERE ID IN (SELECT MIN(ID) FROM TABLE GROUP BY COL1);
komutunu ibexpert ile çalıştırdım 20 dk dan fazla bekledim ibexpert dondu işlemi sonlandırdım kendi kendime dedim bunu IN komutu ile yapayım daha önce denemiştim gayet daha hızlıydı yukarıdaki update sqlinden
UPDATE TABLE SET islendimi = 0 WHERE id IN (1, 2, ... 4000) gibi ama komut çalışmadı Too many values (more than 1500) in member list to match against hatası verdi firebirde IN komutu için 1499 gibi bir limit varmış sonra dedim öyle olmazsa bende and or ile yapayım update den önce bir select çekeyim dedim


SELECT * FROM TABLE WHERE 1=1
AND ID= '110167'
OR ID= '110168'
OR ID= '89733'
OR ID= '110169' gibi uzuyor

bu sefer de Unexpected end of command - line 1960, column 5. hatasını aldım burada da yine bir limite dayandım çünkü o satırı silip başka bir satır koysam onda da yine aynı hatayı veriyor hem IN komutu ile hem AND OR ile işlemi 4-5 parçaya bölünce sıkıntı yok.

bir fikir bir çözüm yolu varmıdır yoksa böl parçala ile devam mı etmeliyim.
Mücadele güzelleştirir!
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Firebird sql in limit and or limit

Mesaj gönderen freeman35 »

procedure içinde döngü kursan daha iyi olur sanrım.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Firebird sql in limit and or limit

Mesaj gönderen greenegitim »

çok nadir lazım olan bir şey ayda yılda bir kullanacağım bir şey olduğu için procedure e gerek yok şimdilik ama tuhafıma giti acaba diğer rdbms lerdede böyle bir sınır varmıdır postgresql ile test edip sonucu buraya yazacağım inş.
Mücadele güzelleştirir!
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Firebird sql in limit and or limit

Mesaj gönderen mkysoft »

MSSQL ve MySQL'de de request ve IN komutu içindeki eleman sayısı ile ilgili sınırlar mevcut. MySQL ayarlarından arıtırılabiliyor, MSSQL'de emin değilim.
Bir temp tabloyada atıp oradan update edebilirsiniz.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Firebird sql in limit and or limit

Mesaj gönderen greenegitim »

postgresql ile IN komutu ile denedim bir hata uyarı çıkmadı
dönen sonuç 4825 rows fetched (0,22 sec)
and or ile 4825 rows fetched (0,48 sec)
Mücadele güzelleştirir!
anemos
Üye
Mesajlar: 110
Kayıt: 02 Nis 2007 07:51
Konum: Sakarya / Hendek

Re: Firebird sql in limit and or limit

Mesaj gönderen anemos »

Procedure oluşturmanıza gerek yok. PSQL cümlesini "execute block" deyimi ile döngü kurarak çalıştırabilirsiniz.
Cevapla