Zapytanie sql zliczające rekordy, jak?
Marek - 12-11-2006 01:30
Zapytanie sql zliczające rekordy, jak?
Witam,
Jak najwydaniej sformułować zapytanie sql zliczające rekordy w PostgreSQL 8.x dla przypadku w postaci (w uproszczeniu):
CREATE TABLE document ( .... category_id .... }
CREATE TABLE subcategory_helper { parent_id --kategoria nadrzędna child_id --potomkowie w/w kategorii jakas_cecha_parenta ..... }
Chciałbym policzyć dokumenty, dla których category_id=subcategory_helper.parent_id a pole jakas_cecha_parenta wynosi 5. Problem w tym, że w tabeli subcategory_helper mamy wiele rekordów spełniających warunek category_id=subcategory_helper.parent_id jednakże zawsze jest tak, że dla każdego parent_id pole jakas_cecha_parenta wynosi tyle samo. Teoretycznie mógłbym zliczać rekordy następująco:
SELECT count(*) FROM document WHERE category_id IN (SELECT DISTINCT parent_id FROM subcategory_helper WHERE jakas_cecha_parenta=5)
DISTINCT można pominąć lecz wydaje mi się, że wtedy spadnie wydajność zapytania, może się mylę. Czy macie jakieś inne pomysły?
-- Pozdrawiam, Marek
Paweł Matejski - 12-11-2006 01:30
Marek wrote: > Witam, > > Jak najwydaniej sformułować zapytanie sql zliczające rekordy w > PostgreSQL 8.x dla przypadku w postaci (w uproszczeniu): > > CREATE TABLE document > ( > ... > category_id > ... > } > > CREATE TABLE subcategory_helper > { > parent_id --kategoria nadrzędna > child_id --potomkowie w/w kategorii > jakas_cecha_parenta > .... > } > > Chciałbym policzyć dokumenty, dla których > category_id=subcategory_helper.parent_id a pole jakas_cecha_parenta > wynosi 5. Problem w tym, że w tabeli subcategory_helper mamy wiele > rekordów spełniających warunek category_id=subcategory_helper.parent_id > jednakże zawsze jest tak, że dla każdego parent_id pole > jakas_cecha_parenta wynosi tyle samo. Teoretycznie mógłbym zliczać > rekordy następująco: > > SELECT count(*) FROM document WHERE category_id IN (SELECT DISTINCT > parent_id FROM subcategory_helper WHERE jakas_cecha_parenta=5) > > DISTINCT można pominąć lecz wydaje mi się, że wtedy spadnie wydajność > zapytania, może się mylę. Czy macie jakieś inne pomysły? >
SELECT count(DISTINCT parent_id) FROM subcategory_helper WHERE jakas_cecha_parenta=5
-- P.M.
Marek - 12-11-2006 01:30
> SELECT count(DISTINCT parent_id) > FROM subcategory_helper > WHERE jakas_cecha_parenta=5
To zapytanie zlicza kategorie lecz nie dokumenty zawarte w nich... ale podsunąłeś mi myśl przeeksperymentowania. Nie sądziłem, że DISTINCT może być w tym miejscu.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
zanotowane.pldoc.pisz.plpdf.pisz.plautwywalczyl.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|