Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Jak sprawić, aby zapytanie SQL zwracało różne wyniki ?
Forum PHP.pl > Forum > Przedszkole
-Mati-
Mam takie zapytanie:

  1. SELECT id,tytul FROM `m` WHERE `id`>0 AND `y`>0 AND `b`=0 LIMIT 1


Powiedzmy, że 100 rekordów spełnia te założenia, ale chciałbym, żeby to zapytanie nie zawracało mi pierwszego pasującego wyniku
tylko jakiś losowy z tych stu.

Nie wiem jak to zrobić, może wprowadzić tam gdzieś rand(), tylko gdzie i jak ?
-Mati-
Po dodaniu do zapytania: ORDER BY RAND(), całość wykonuje się kilkaset razy wolniej niż bez tego, więc ten sposób odpada.
Macie jakieś pomysły jak w inny sposób zmusić zapytanie do pokazania losowego wyniku z puli wyników ?
AlexDeLarge
1. ORDER BY RAND() LIMIT 1 - rozwiązanie ZŁE, w przypadku dużej liczby rekordów dla każdego wyniku musi zostać obliczona liczba pseudolosowa i na końcu wykonane sortowanie
2. SELECT COUNT(*) AS c FROM m WHERE (warunki)
i w PHP:
  1. $randrow = rand(0, $row['c']); //z zapytania
  2. $pdo->query("SELECT ... FROM ... WHERE ... LIMIT $randrow, 1");


Zdrówka życzę.
-mati-
Dzięki za pomoc, zaraz to przetestuje.
Mam jeszcze pytanie, jaka funkcja jest potrzebna aby pobierać wyniki w ten sposób:

  1. $pdo->query("SELECT ... FROM ... WHERE ... LIMIT $randrow, 1");


Ja zawsze bawie się tak:

  1. $sql = 'SELECT';
  2. $result = mysql_query($sql);
  3. $row = mysql_fetch_array($result);


Ale chyba Twoim sposobem szybciej.
AlexDeLarge
PDO
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.