Firebird [MySql LIMIT simulasyonu]
Firebird [MySql LIMIT simulasyonu]
MySql de LIMIT komutu select ifadelerinde cok faydalı bir anahtar kelime
mesela 1. sayfada 0. kayıttan 10 kayıt getir,2.sayfada 10.kayıttan 10 kayıt getir vs. boylece sayfalar ile kayıtları gez
Firebird de FIRST ve SKIP birlikte LIMIT islevini gormekte
SELECT FIRST 10 SKIP 0 * FROM MYTABLE
0.kayıttan sonra 10 kayıt
SELECT FIRST 10 SKIP 10 * FROM MYTABLE
10.kayıttan sonra 10 kayıt
SELECT FIRST 10 SKIP 20 * FROM MYTABLE
20.kayıttan sonra 10 kayıt
Kolay Gelsin
mesela 1. sayfada 0. kayıttan 10 kayıt getir,2.sayfada 10.kayıttan 10 kayıt getir vs. boylece sayfalar ile kayıtları gez
Firebird de FIRST ve SKIP birlikte LIMIT islevini gormekte
SELECT FIRST 10 SKIP 0 * FROM MYTABLE
0.kayıttan sonra 10 kayıt
SELECT FIRST 10 SKIP 10 * FROM MYTABLE
10.kayıttan sonra 10 kayıt
SELECT FIRST 10 SKIP 20 * FROM MYTABLE
20.kayıttan sonra 10 kayıt
Kolay Gelsin
ÜŞENME,ERTELEME,VAZGEÇME
peki şöyle bir durum var.
ben bu işlemi veritabanını rahatsız etmemek için yapıyorum. yani tüm dataları çekmek yerine 10ar 10ar çekeyim diyorum.
mesela diyelim son 10 faturayı veritabanından çektim.
son 10 faturanın müşteri bilgilerinin de müşteri tablosundan çekmek istesem nasıl olur?
son 10 faturayı çeken kod [ibdataset için]:
son 10 faturanın müşteri bilgilerini çeken kod
bu sistem çalışır ama select first 10 skip 567 * from faturalar sorgusu iki kere çalıştırılmış oluyor.
ikinci sorguda musterino in'den sonra veritabanını rahatsız etmeden devam edemezmiyiz? çünkü zaten 1. sorguda söz konusu kayıtları çektik.
ben bu işlemi veritabanını rahatsız etmemek için yapıyorum. yani tüm dataları çekmek yerine 10ar 10ar çekeyim diyorum.
mesela diyelim son 10 faturayı veritabanından çektim.
son 10 faturanın müşteri bilgilerinin de müşteri tablosundan çekmek istesem nasıl olur?
son 10 faturayı çeken kod [ibdataset için]:
Kod: Tümünü seç
select first 10 skip 567 * from faturalar
Kod: Tümünü seç
select * from musteriler where musterino in(select first 10 skip 567 musteri_no from faturalar)
ikinci sorguda musterino in'den sonra veritabanını rahatsız etmeden devam edemezmiyiz? çünkü zaten 1. sorguda söz konusu kayıtları çektik.
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Baya bir araştırdım, ama tam olarak skip işlemini yapan komuta rastlayamadım.
aşağıdaki sorguda görülen subquery skip işlemi görüyor. order by önemli.
aşağıdaki sorguda görülen subquery skip işlemi görüyor. order by önemli.
Kod: Tümünü seç
SELECT TOP 10 * FROM TBL_ILLER AS IL
WHERE IDNO NOT IN (SELECT TOP 10 IDNO FROM TBL_ILLER ORDER BY IDNO ASC) ORDER BY IDNO ASC