Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Limit pobierania w MySQLu skonstruowany tak, by pobrać wszystkie klucze o identycznej wartości pewnego pola
Forum PHP.pl > Forum > Bazy danych > MySQL
L_Devil
Mam tabelę zawierającą stosunkowo dużą liczbę rekordów (ponad 8000) pogrupowaną wg. kategorii, tzn:

Kod
+-------+--------------+------------------------+
|  id   |   category   |       value            |
+-------+--------------+------------------------+
|  1    |     1        |        blablabla       |
|  2    |     2        |        costam          |
|  3    |     2        |        kolejna wartosc |
|  4    |     3        |        i jeszcze jedna |
+-------+--------------+------------------------+


Chciałbym teraz wybrać rekordy z przedziału od do (tzn. na wzór LIMIT 0, 2), lecz tak, żeby pobrane zostały przy okazji wszystkie rekordy tej samej kategorii, jak te, które mieszczą się w przedziale (a więc: polecenie LIMIT 0, 2 dałoby nam pierwsze trzy rekordy: pierwsze dwa z definicji i trzeci, który ma takie same pole category jak drugi, który "łapie się" do limitu). Jak to osiągnąć?

Z góry dzięki za wszystkie porady winksmiley.jpg
Kicok
Można to zrobić używając podzapytania:
  1. SELECT *
  2. FROM tabela WHERE (category IN (SELECT DISTINCT category FROM tabela ORDER BY category ASC LIMIT 0, 2))


Pisane z palca, więc mogą być literówki
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.