Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] count w zapytaniu z join i group by
Forum PHP.pl > Forum > Bazy danych > MySQL
psw779
Mam takie zapytanie:

  1. SELECT albums.id FROM albums LEFT JOIN pictures ON pictures.ida = albums.id WHERE pictures.id IS NOT NULL GROUP BY albums.id


Chciałbym na poziomie bazy czyli np. przy pomocy COUNT(*) dowiedzieć się ile to zapytanie zwraca wierszy, nic więcej.
Można powiedzieć, że odpowiednik mysql_num_rows() które nie jest chyba zbyt optymalne przy dziesiątkach tysięcy rekordów.
phpion
Najprościej jak się da:
  1. SELECT COUNT(*) FROM albums LEFT JOIN pictures ON pictures.ida = albums.id WHERE pictures.id IS NOT NULL GROUP BY albums.id

To zapytanie powinno Ci zliczyć liczbę niepustych albumów - o to Ci chodzi? Jeśli chciałbyś zliczyć liczbę fotek to należałoby to zrobić od drugiej strony: od pictures zrobić złączenie do albums.
psw779
Już tak próbowałem i wiem, że to zapytanie niestety zwraca liczbę fotek w każdym albumie i nadal mam ileś tysięcy wierszy w odpowiedzi.
nospor
mozesz uzyc podzapytania
  1. SELECT count(*) FROM (SELECT albums.id FROM albums LEFT JOIN pictures ON pictures.ida = albums.id WHERE pictures.id IS NOT NULL GROUP BY albums.id) pod


Ale skoro grupujesz po albums.id czyli defacto pobierzesz liczbe rekordow, mozna wiec krocej
  1. SELECT count(*) FROM albums
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.