Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] zapytanie z COUNT()
Forum PHP.pl > Forum > Przedszkole
bmL
Witam, mam sobie ja biedny takie zapytanie:

Kod
SELECT count(divisions.teamID) as divisions, teams.id, teams.name
FROM teams, divisions
WHERE divisions.teamID = teams.id
GROUP BY divisions.teamID;


Problem tkwi w tym, że gdy warunek
Kod
divisions.teamID = teams.id
nie jest spełniony to nic nie jest zwracane a chciałbym, żeby w takim wypadku count(divisions.teamID) as divisions zawierało 0 a reszta wyświetlała się normalnie. Czy da się to zrobić jednym zapytaniem?

bmL
nevt
  1. SELECT `id`, `name`, count(teamID) AS `divisions` FROM `teams` LEFT JOIN `divisions` ON `teams`.`id` = `divisions`.`teamID` GROUP BY `id`;
bmL
Koncepcja wydaje się dobra ale coś nie chce działać nie wiem czemu wygląda to tak:

Zapytanie:
  1. SELECT `teams`.`id`, `name`, count(teamID) AS `divisions`
  2. FROM `teams` LEFT JOIN `divisions` ON `teams`.`id` = `divisions`.`teamID`
  3. GROUP BY `teamID` ")


Tabela divisions:
Kod
id  / teamID  
19 / 1
20 / 6


Tabela teams:
Kod
id / name
1 / team1
2 / team2
4 / team4
5 / team5
6 / team6


Wynik:
Kod
Name / divisions
team2 / 0
team1 / 1
team6 / 1


Czyli wyświetlany jest tylko 1 rekord dla którego jest 0 odpowiedników w tabeli divisions.
nevt
przecież grupujesz nie po tym polu... copy+paste nie działa ? jeszcze raz (dodałem tabelę do id):
  1. SELECT `id`, `name`, count(teamID) AS `divisions` FROM `teams` LEFT JOIN `divisions` ON `teams`.`id` = `divisions`.`teamID` GROUP BY `teams`.`id`;
bmL
Wielkie dzięki, wszystko śmiga. Musiałem namieszać bo zapytanie jest trochę bardziej skomplikowane a tutaj wkleiłem uproszczoną wersję smile.gif Więc copy->paste odpada smile.gif
Teraz będę próbował zrozumieć o co chodzi w LEFT JOIN :]
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.