Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%)
|
W taki sposób losuję, które rekordy z bazy danych mają być pobrane
Kod $comrades = $db -> Execute("SELECT * FROM users WHERE id >= ".$sektor_id -> fields['id']." AND id <= ".$sektor_id -> fields['id']." + 2 ORDER BY rand() LIMIT 4"); Niestety ilość rekordów spełniających te kryteria wynosi 3, a LIMIT 4. W jaki sposób przerobić to by było to prawdziwe losowanie - tj. za każdym razem byłby losowany user z podanego przedziału id bez względu na poprzednie losowania (czyt. możliwe byłoby pobranie kilka razy tego samego usera). |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 4 Dołączył: 9.06.2007 Skąd: Kielce Ostrzeżenie: (0%)
|
szczerze mówiąc do końca nie rozumiem co masz na myśli. Losowanie 4 użytkowników z bazy, gdy tylko 3 spełnia zależności? to tylko możesz kolejność ich zmienić, ale to już masz zrobione w tym zapytaniu. W jakim celu wykorzystujesz ten fragment 'id >= ".$sektor_id -> fields['id']." AND id <= ".$sektor_id -> fields['id']." + 2' Ja bym to zrobił po prostu:
Kod $comrades = $db -> Execute("SELECT * FROM users ORDER BY rand() LIMIT 1"); I masz losowanie różnych użytkowników, nie ma możliwości aby za każdym razem był inny gdyż ich suma jest skończona a coś mi mówi że ilość wywoływań powyższego skryptu będzie większa niż ilość użytkowników.
|
|
|
|
Skie [MYSQL] Losowanie wyników 29.08.2008, 18:32:13
szopen Uprasza się o niezajeżdżanie serwer... 30.08.2008, 03:39:43
Skie Tylko teraz powstaje pytanie co jest bardziej wyda... 30.08.2008, 10:28:17 
szopen Cytat(Skie @ 30.08.2008, 11:28:17 ) T... 31.08.2008, 15:50:55
golaod No rzeczywiście w while wyciągnąć 30 tys. wyników ... 30.08.2008, 10:39:48 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 05:50 |