ďťż
 
Zapytanie sql zliczające rekordy, jak? ďťż
 
Zapytanie sql zliczające rekordy, jak?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • autwywalczyl.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com