Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie zdarzeń za pomocą COUNT()
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
beel
Witam, otóż mam w bazie sprawy, w których rejestrowane są pewne zdarzenia.

I tak zapytanie:
  1. SELECT COUNT(*)
  2. FROM umowa JOIN sprawa ON umo_id_spr=spr_id
  3. JOIN s_etap ON spr_id_set=set_id
  4. JOIN komornicy ON spr_id_komornika=kom_id
  5. JOIN sady ON spr_id_sadu=sad_id
  6. JOIN konto AS k2 ON spr_id=k2.kon_id_spr AND k2.kon_id_sop=409
  7. JOIN zdarzenie ON zda_id_spr=spr_id
  8. JOIN s_opis_zdarzenia ON zda_id_soz=soz_id
  9. WHERE kom_imie_i_nazwisko IS NOT NULL AND kom_imie_i_nazwisko != ''
  10. AND soz_nazwa='MOJE ZDARZENIE'


Da mi wynik: 7872.

Działa dobrze, bo zlicza wszystkie wystąpienia danego zdarzenia (MOJE ZDARZENIE). Lecz gdy zapytanie zmodyfikuje do postaci (Klauzula group by):
  1. SELECT umo_idprocesu
  2. FROM umowa JOIN sprawa ON umo_id_spr=spr_id
  3. JOIN s_etap ON spr_id_set=set_id
  4. JOIN komornicy ON spr_id_komornika=kom_id
  5. JOIN sady ON spr_id_sadu=sad_id
  6. JOIN konto AS k2 ON spr_id=k2.kon_id_spr AND k2.kon_id_sop=409
  7. JOIN zdarzenie ON zda_id_spr=spr_id
  8. JOIN s_opis_zdarzenia ON zda_id_soz=soz_id
  9. WHERE kom_imie_i_nazwisko IS NOT NULL AND kom_imie_i_nazwisko != ''
  10. AND soz_nazwa='MOJE ZDARZENIE' GROUP BY umo_idprocesu


To mi zwróci 7038 wierszy. Jak tę liczbę 7038 zwrócić za pomocą COUNT()? Czyli aby nie zliczać podwójnych zdarzeń w bazie dla konkretnej sprawy?
phpion
Może nieco za późno, ale może się przyda:
  1. SELECT COUNT(DISTINCT umo_idprocesu)...

Powinno zadziałać.
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-2024 Invision Power Services, Inc.