Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z count(*) przy JOIN
Forum PHP.pl > Forum > Bazy danych
bjen
Witam,
Walczę ostatnio z poniższym problemem i pomysły mi sie wyczerpały, dlatego proszę Was o pomoc.

Mam złączenie:

select count(*) from OBJECTS oo RIGHT JOIN EXECUTIONS a ON oo.EXECUTION_ID = a.ID

W tabeli w aplikacji wyświetlam jedynie obiekty z tabeli a, czyli EXECUTIONS. Zapytanie zwraca mi powtórzone obiekty z EXECUTIONS, dlatego w select używam DISTINCT, by każdy wiersz był unikalnym. Tu jest ok. Chciałbym teraz policzyć te unikalne wiersze i tu wystepuje problem. Gdy użyję powyższego zapytania, to zliczam wszystkie wiersze, te nieunikalne także.

Moim pytaniem jest... jak spowodować, aby zliczyć jedynie te unikalne wiersze, czyli tak jakby wykonać zapytanie:
select count(*) from EXECUTIONS a
Tego zapytania niestety nie mogę użyć ze względu na specyfikę aplikacji, muszę korzystać z JOINa, takiego jak powyżej.

count(DISTINCT) nie działa poprawnie w EJBQL. Macie jakieś wskazówki ?

Z góry dzięki !
alegorn
interesuja cie jedynie unikaty?
zgrupuj

  1. GROUP BY a.ID



j.
pjamalia
zapamiętaj, że kiedy wykorzystujesz funkcjie agregujące zawsze musisz używać klauzuli GROUP BY
maly_swd
  1. SELECT count( DISTINCT oo.EXECUTION_ID) FROM OBJECTS oo RIGHT JOIN EXECUTIONS a ON oo.EXECUTION_ID = a.ID GROUP BY oo.EXECUTION_ID
mmmmmmm
  1. SELECT count( DISTINCT a.ID) FROM OBJECTS oo RIGHT JOIN EXECUTIONS a ON oo.EXECUTION_ID = a.ID

@pjamalia - nieprawdą jest, że przy agregatach zawsze trzeba używać GROUP BY. Trzeba ich używać, gdy się używa pól grupujących. Powyższy przykład jest prawdiłowy, bo nie ma pól grupujących.
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.