Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Użycie MAX() zamiast LIMIT 1
Forum PHP.pl > Forum > Bazy danych
kodereq
Mam sobie takie zapytanie:

  1. SELECT marka, count(marka)
  2. FROM wynik WHERE strata IS NOT NULL
  3. GROUP BY marka
  4. ORDER BY count(marka) DESC LIMIT 1


na tabeli "wynik" o dwóch kolumnach "marka" i "strata". Chcę wybrać markę, która wystąpiła najczęściej i miała niezerowe straty. Dla jasności dodam, że bez "LIMIT 1" po prostu zliczy mi wystąpienia danych mark i posortuje malejąco. Tym zapytaniem wszytko działa świetnie, nie umiem natomiast zrobić tego za pomocą MAX().

Miałby ktoś pomysł jak to zrobić za pomocą max?

Zastanawiam się, czemu takie zapytanie daje error:

  1. SELECT MAX(Count(marka)) AS max
  2. FROM wynik WHERE strata IS NOT NULL
  3. GROUP BY marka
  4. ORDER BY count(marka) DESC LIMIT 1


#1111 - Invalid use of group function
kefirek
Tak jak ty próbujesz sie chyba nie da
MAX(COUNT(marka))
Można tak
  1. SELECT marka, MAX(ile) AS ma FROM (
  2. (SELECT *, COUNT(marka) AS ile FROM wynik WHERE strata IS NOT NULL GROUP BY marka) AS tabela
  3. ) GROUP BY marka ORDER BY ma DESC LIMIT 1


Po za tym lepiej zrobic zamist
  1. SELECT marka, count(marka)
  2. FROM wynik WHERE strata IS NOT NULL
  3. GROUP BY marka
  4. ORDER BY count(marka) DESC LIMIT 1


Zrobic tak
  1. SELECT marka, count(marka) AS ile
  2. FROM wynik WHERE strata IS NOT NULL
  3. GROUP BY marka
  4. ORDER BY ile DESC LIMIT 1
kodereq
Świetnie, działa - wielkie dzięki.

Może ma ktoś jeszcze inne propozycje? Genialnie by było jednak z MAX() bez zagnieżdzania ...
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.