![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Witam.
1) Jak 'wyselectować' losowy rekord z bazy po id? Wiem jak to zrobić phpem ale interesuje mnie SQL. Jest jakaś funkcja która losuje spośród wszystkich rekordów z danej tabeli, bez podawania przedziałów id (nie ważne czy jest 5 czy 190 rekordów)? 2) Jeśli jest taka funkcja to czy można jej wskazać (np. za pośrednictwem WHERE) jakieś kryteria losowania? Np. rekordy tabeli: id ..................dane..................procent prawdopodobienstwa wylosowania ================================================ 1..................76r7r..................10 2..................98h67..................15 3..................uytbu..................45 4..................987tn8..................1 5..................ydv4..................25 6..................976bn7................4 ================================================ Razem 100% prawdopodobieństwa Teraz aby przy 100 losowaniach (najpradopodobniej) wylosowało pozycję: 1 - 10 razy 2 - 15 razy 3 - 45 razy 4 - 1 raz 5 - 25 razy 6 - 4 razy Czy warunek z pytania 2) da się zrobić samym SQLem? Pewnie nie ale zapytać nie zaszkodzi ![]() Ten post edytował sadistic_son 28.03.2010, 07:06:43 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 317 Pomógł: 58 Dołączył: 6.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ad.1 Chodzi Ci o coś takiego?
Edit: a co do pytania 2. to w sumie można tak spróbować:
Ten post edytował luck 28.03.2010, 07:15:50 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Taaa... A zakres określić można po prostu w WHERE lub rozszerzając go poprzez użycie IN lub BETWEEN. Tylko lojalnie zastrzegam ODER BY RAND() jest mocno obciążające bazę i dlatego jesli się ma możliwość, to powinno się tego unikać. Dopóki rekordów jest mało to jeszcze OK. gdy jest ich dużo to lepiej pobrać sobie choćby id dostępnych rekordów, z nich po stronie php wylosować ileś tam i do bazy już posłać SELECT z owymi konkretnie wybranymi id. To już optymalizacja, ale jeśli się zagłębisz w temat usprawniania serwisu to sam sie dowiesz czego nie powinno się stosować i jak to usprawniać.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:25 |