Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Zliczanie przed grupowaniem
Forum PHP.pl > Forum > Przedszkole
wicy
Mam bazę, która wygląda mniej więcej tak:
[nazwa] [A] [B] [nazwa niepowtarzalna]
nazwa 1 - 10 - 100 - nazwa_niepowtarzalna 1
nazwa 2 - 10 - 101 - nazwa_niepowtarzalna 2
nazwa 3 - 11 - 100 - nazwa_niepowtarzalna 1
nazwa 4 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 5 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 6 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 7 - 12 - 103 - nazwa_niepowtarzalna 4
nazwa 8 - 10 - 100 - nazwa_niepowtarzalna 1

w której grupuję wiersze by otrzymać niepowtarzalne nazwy w tabeli na stronie.
Obok tych nazw chciałbym dwie liczby - ilość wystąpień [nazwa] i ilość wystąpień B, czyli np.
Nazwa niepowtarzalna 1 - 2 - 1
Nazwa niepowtarzalna 2 - 1 - 1
Nazwa niepowtarzalna 3 - 3 - 1
Nazwa niepowtarzalna 4 - 1 - 1
Używam:
SELECT tabela.*, count(a) as nazwa, count(b ) as ile_b FROM tabela WHERE a>=10 and b>=100 GROUP BY nazwa_niepowtarzalna.
W tabeli wynikowej dostaję (chyba) poprawne wartości count(b ) natomiast count(a ) jest błędny i jest równy count(b ).

Nazwa niepowtarzalna jest przypisana ściśle do wartości A w tabeli, więc grupowanie po niej powoduje, że mam jeden wiersz z pierwszym wystąpieniem wartości A. Po grupowaniu wygląda to tak:
[nazwa] [A] [B] [nazwa niepowtarzalna]
nazwa 1 - 10 - 100 - nazwa_niepowtarzalna 1
nazwa 2 - 10 - 101 - nazwa_niepowtarzalna 2
nazwa 4 - 12 - 102 - nazwa_niepowtarzalna 3
nazwa 7 - 12 - 103 - nazwa_niepowtarzalna 4

Jak zliczyć wiersze przed ich zgrupowaniem?
kefirek
Chyba tak bedzie dobrze.

  1. SELECT *,
  2. (SELECT COUNT(a) FROM tabela n2 WHERE (n2.nazwa niepowtarzalna=n1.nazwa niepowtarzalna) AND a>=10) AS ile_a,
  3. (SELECT COUNT(b) FROM tabela n3 WHERE (n3.nazwa niepowtarzalna=n1.nazwa niepowtarzalna) AND b>=100) AS ile_b,
  4. COUNT(nazwa niepowtarzalna) AS ile_nazw
  5. FROM tabela n1 GROUP BY nazwa
wicy
Dzięki za pomoc. Wystarczyło w count dodać distinct - count(distinct a) winksmiley.jpg
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.