![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 9.01.2004 Ostrzeżenie: (20%) ![]() ![]() |
Witam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Mam problem... potrzebuję pobrać losowe dane z bazy w mysql'u i posortować je rosnąco według zadanego kryterium... Do tej pory używałem , jednakże to nie daje możliwości posortowania danych... Czy jest jakas inna metoda ? Pozdrawiam Patryk |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 6 Dołączył: 14.01.2003 Skąd: Warszawa Ostrzeżenie: (10%) ![]() ![]() |
no bo nie bardzo!
zastanow sie co chcesz zrobic ! kazesz wylosowac rekordy i potem je posortowac hmm jesli wykorzystujesz php'a to otrzymujesz jako wynik otrzymujesz tablice - a jak wiadomo tablice mozna posortowac np w php'ie bez przeszkód (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Nasuwa mi się rozwiązanie, ale za pomocą dwóch selectów:
1. Wyciągasz z bazy max(id) wszystkich rekordów. 2. losujesz z nich w php potrzebną ci ilość liczb. 3. wyciągasz z bazy rekordy, których id = wylosowanym liczbom. możesz to sobie wtedy dowolnie posortować. |
|
|
![]()
Post
#4
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
[php:1:9f208fea02]<?php
$t=mysql_fetch_array(mysql_query("SELECT max(id) as ile FROM tabela")); $ile=$t["ile"]; $rand=array(); while(count($rand)<11) { $tmp=mt_rand(); if(!in_array($tmp,$rand)) { $rand[]=$tmp; } } $sql=@implode(",",$rand); $q=mysql_query("SELECT * FROM tabela WHERE id IN (".$sql.") ORDER BY costam"); ?>[/php:1:9f208fea02] |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat [sql:1:31ebd76e89]SELECT imie, nazwisko FROM ludzie ORDER by RAND(), nazwisko ASC LIMIT 10[/sql:1:31ebd76e89]Czy to przypadkiem nie zadziała? Nie mam bazy pod ręką...
Nie sądze... RAND() zwraca liczbę od 0-1. Poza tym ORDER BY działa w ten sposób, ze drugi warunek jest uzywany, kiedy pierwsy jest taki sam - więc ten sposób odpada, biorąc pod uwage co zwraca RAND() i sposób sortowania przez ORDER BY. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 29.10.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ogólna zasada: Losowania i segregowania wylosowanych kolumn wg jakieś kolumny:
Sam długo nad tym walczyłem! Ale dzięki temu można dodwać wagi ważności przy losowaniu rekordów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 21.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
meczylem sie nad losowym wybieraniem rekordow, pisalem
Kod SELECT * FROM TABLE n RAND i nic , pomyslalem "no nie! to niemozliwe! wejde na php.PL", a tu niespodzianka : trzeba dodac do RAND "()" (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) hehe
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 16:01 |