folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Sql Tekrarsiz Randomize Nasil Yapilir



Sql Tekrarsiz Randomize Nasil Yapilir

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yunusemre
    yunusemre's avatar
    Kayıt Tarihi: 22/Ağustos/2016
    Erkek

    selamlar,

    soyle bir sql cumlem var:

    SELECT p.*
    FROM category_user c
    LEFT JOIN products p on c.category_id = p.category_id
    WHERE c.user_id = 1
    ORDER BY rand()
    LIMIT 10
    OFFSET 0

     

    orn: 100 tane total kayit var, bunu her request ile 10 ar 10 ar cekmek istiyorum. ve toplamda atilacak 10 istek herseferinde birbirinden farkli sonuclar dondurmesi gerekiyor. 

     

    veritabanina ekstra alan ekleyebilirim gerekirse, veya yola baska turlu bir sorgu ile devam edebilirim. 

     

    bu pinterestteki gibi bir akis algoritmasna benzeyecek, yorumlarinizi merak ediyorum

    yunusemre tarafından 10/Nis/23 21:47 tarihinde düzenlenmiştir

    "Programcılar saatler boyunca çalışmak zorunda kalmalarına engel olacak sistemler tasarlamaya saatler boyunca uğraşırlar." David Allen
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hermes
    abdullahazad
    abdullahazad's avatar
    Kayıt Tarihi: 21/Mayıs/2007
    Erkek
    SELECT p.*
    FROM category_user c
    LEFT JOIN products p on c.category_id = p.category_id
    WHERE c.user_id = 1
    ORDER BY RAND()
    LIMIT 10
    OFFSET (SELECT FLOOR(RAND() * ((SELECT COUNT(*) FROM products WHERE category_id IN (SELECT category_id FROM category_user WHERE user_id = 1)) - 10 + 1)))

     

     

     

    abdullahazad tarafından 10/Nis/23 22:24 tarihinde düzenlenmiştir

    az insan çok huzur.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EnableTurk
    EnableTurk's avatar
    Kayıt Tarihi: 29/Eylül/2007
    Erkek

    hacı dayı getirdiğin random 10 kayıt için bigint bi alan oluştur içine timestamp update et. 

    sonra getirirken order by bigint_sutun DESC yaparak getir. 


    seni 4 kere döverim yarın 🤙
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yunusemre
    yunusemre's avatar
    Kayıt Tarihi: 22/Ağustos/2016
    Erkek

    @abdullahazad @EnableTurk tesekkurler hocalar. cevaplar tam olarak istedigime biraz uzak olsa da guzel fikir verdiler yeni bir yol cizdim kendime 


    "Programcılar saatler boyunca çalışmak zorunda kalmalarına engel olacak sistemler tasarlamaya saatler boyunca uğraşırlar." David Allen
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek

    Hocam once 1 ile 100 arasi sayilari bi listeye atiyorsun. Sonra o listeyi karistiriyorsun (shuffle)

    Sonra listenin basindan 10 tane id cekip onlari gosteriyorsun, sonra 2, 10 taneyi, sonra 3. 10 taneyi

    listeyi ister dosyaya kaydet, ister dbye kaydet, ister sessionda tut. Senaryona gore sana kalmis.

     


    There are 10 types of people in the world. Those who knows binary and those who dont...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek

    yeni bir field ekle "getrandom" vb gibi. bit olsun içine true bas bütün kolonlara.

    daha sonra çekerken

    select top 100 * from table Where getrandom<>false order by newid()

    şeklinde çek.

    elindeki listenin getrandom field'ini false yap ondan sonra yoluna devam et

     

     

     

    manglerman tarafından 11/Nis/23 11:00 tarihinde düzenlenmiştir

    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
Toplam Hit: 1319 Toplam Mesaj: 6
sql