Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z count(*) przy JOIN
bjen
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.04.2011

Ostrzeżenie: (0%)
-----


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 !
Go to the top of the page
+Quote Post
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


interesuja cie jedynie unikaty?
zgrupuj

  1. GROUP BY a.ID



j.
Go to the top of the page
+Quote Post
pjamalia
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 1.11.2009

Ostrzeżenie: (0%)
-----


zapamiętaj, że kiedy wykorzystujesz funkcjie agregujące zawsze musisz używać klauzuli GROUP BY
Go to the top of the page
+Quote Post
maly_swd
post
Post #4





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


  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


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #5





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:49