SQL Select problemi

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
habilkader
Üye
Mesajlar: 61
Kayıt: 14 Eki 2006 11:11

SQL Select problemi

Mesaj gönderen habilkader »

Merhabalar;
2000 bin öğrencinin kayıtlı olduğu bir Access tablom var. (Firebird 2.0 da RND olmadığı için şimdilik Access kullandım. )

Kod: Tümünü seç

SELECT Numara, AdSoyad, sube FROM Ogrenci 
Where Sinif='9' ORDER BY Rnd(ID*1000*Time());
Yukarıdaki Kod ile 9.sınıftaki tüm öğrencileri rastgele karışık olarak listeliyorum.
Ancak aynı şubeden (A,B,C,D,....) 2 kaydın arka arkaya gelmesini istemiyorum.
Mesela A şubesinden 2 kayıt arka arkaya gelmesin gibi...
Bu işlem SQL ile yapılabilirmi ??
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: SQL Select problemi

Mesaj gönderen Lost Soul »

Kod: Tümünü seç

SELECT distinct Numara, AdSoyad, sube FROM Ogrenci 
Where Sinif='9' ORDER BY Rnd(ID*1000*Time());
habilkader
Üye
Mesajlar: 61
Kayıt: 14 Eki 2006 11:11

Re: SQL Select problemi

Mesaj gönderen habilkader »

Kod: Tümünü seç

distinct
, sonuç kümesi içindeki mükerer kayıtları engeller. Birebir aynı olan kayıtlı tek kayıt olarak gösterir.
Benim istediğim bu değil.
örenğin A,B,C şubelerindeki toplam 100 öğrenciyi alt alta sıralayacak ama aynı şubedeki 2 öğrenci ard arda gelmeyecek
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: SQL Select problemi

Mesaj gönderen Lost Soul »

Özür dilerim soruyu dikkattli okumamışım. araştırma yaptım şöyle bir sonuç çıktı nedir ne değildir denemedim ama.


Select a random row with Firebird:
1) Install ib_udf (comes with the server) or at least the rand() function with this statement:

Kod: Tümünü seç

DECLARE EXTERNAL FUNCTION rand RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf';
2)Now proceed in selecting a random row from the database:

Kod: Tümünü seç

SELECT FIRST 1 * FROM country ORDER BY rand() 

ayrıca firebirdsql.org sayfasında firebird 2.0 ve üstü için rand fonksiyonu yerine srand fonksiyonunu kullanabilirsiniz yazıyor.

rand

Library: ib_udf

Changed in: 2.0

Description: Returns a pseudo-random number. Before Firebird 2.0, this function would first seed the random number generator with the current time in seconds. Multiple rand() calls within the same second would therefore return the same value. If you want that old behaviour in Firebird 2 and up, use the new function srand().

Kod: Tümünü seç

Result type: DOUBLE PRECISION

Syntax: 

    rand ()

Declaration: 

    DECLARE EXTERNAL FUNCTION rand
       RETURNS DOUBLE PRECISION BY VALUE
       ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'
Cevapla