Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Złączenie tabel powoduje dziwne wyniki
Forum PHP.pl > Forum > Bazy danych > MySQL
Flanker
Witam

Główkuję nad tym od kilku godzin i nie mogę dojść dlaczego otrzymuję tak dziwne wyniki.

Te zapytania działają prawidłowo:
  1. SELECT grupa.nazwa, COUNT(forum.id_forum) FROM grupa LEFT JOIN forum ON (grupa.id_grupy=forum.id_grupy) GROUP BY grupa.id_grupy;

i
  1. SELECT grupa.nazwa, COUNT(czlonkowie_grupy.id_czlonkowie_grupy) FROM grupa LEFT JOIN czlonkowie_grupy ON (czlonkowie_grupy.id_grupy=grupa.id_grupy) GROUP BY grupa.id_grupy;


Po złączeniu ich w jedno:
  1. SELECT grupa.nazwa, COUNT(forum.id_forum), COUNT(czlonkowie_grupy.id_czlonkowie_grupy) FROM grupa LEFT JOIN forum ON (grupa.id_grupy=forum.id_grupy) LEFT JOIN czlonkowie_grupy ON (czlonkowie_grupy.id_grupy=grupa.id_grupy) GROUP BY grupa.id_grupy;

W sytuacji gdy tylko jeden COUNT() jest większy od 0 (lub oba równe 0) wyniki są dobre, dziwne dane pojawiają się wtedy, gdy w obu sumowaniach wynik jest większy od zera. W jednym przypadku gdy tu i tu jest 2 wyświetla się 4, w innym znowu przy liczbie for = 2 suma członków zwiększa się o 1.

Nie mam już pomysłów co może tutaj nie grać, proszę o pomoc.

Pozdrawiam
Mchl
Najpierw zliczaj, potem składaj:

Kod
SELECT
  g.nazwa, f.cnt, c.cnt
FROM
  grupa AS g
LEFT JOIN
  (SELECT id_grupy, COUNT(1) AS cnt FROM forum GROUP BY id_grupy) AS f USING (id_grupy)
LEFT JOIN
  (SELECT id_grupy, COUNT(1) AS cnt FROM czlonkowie_grupy GROUP BY id_grupy) AS c USING (id_grupy)
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.