Postgresql - problem z zapyatniem zliczajacym - pomocy :(
koralgol1955@o2.pl - 06-01-2007 00:02
Postgresql - problem z zapyatniem zliczajacym - pomocy :(
Witam! rece mi opadaja albo jestem juz zmeczony albo ja juz nie wiem... mam dwie tabele np. tabela1 ( tabela1_pole char(100) ) tabela2 ( tabela2_pole char(100) )
zawartosc: tabela1 A A A B B
tabela2 A B C
chce dac takie zapyatnie ktore po zlaczeniu, zliczeniu tabel wypisalo by taki wynik A - 3 razy B - 2 razy C - 0 razy ( I TU MAM PROBLEM!!!!!!!)
Jak to osiagnac?? Jzu probowalem rozne rodzaja zlaczen left join itd i nic nie wychodzi ciagle pokazuje mi zliczenia tych wartosci tabeli 2 ktore wystepuja w tabeli 1 raz i wiecej ale nie pokazuje mi zero tych wartosci ktore nie wystepuja za pomoc serdecznie iThank you14:01:28
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 06-01-2007 00:02
koralgol1955@o2.pl wrote: > zawartosc: > tabela1 > A > A > A > B > B > > tabela2 > A > B > C > > chce dac takie zapyatnie ktore po zlaczeniu, zliczeniu tabel wypisalo by > taki wynik > A - 3 razy > B - 2 razy > C - 0 razy ( I TU MAM PROBLEM!!!!!!!)
Na przykład tak:
select tabela2_pole as wartosc, (select count(*) from tabela1 where tabela1_pole = tabela2_pole) as ile from tabela2;
-- Michał Kuratczyk
Marcin - 06-01-2007 00:02
Użytkownik "Michał Kuratczyk" <kura@lj.pl> napisał w wiadomości news:enlnab$jfi$1@mx1.internetia.pl... > koralgol1955@o2.pl wrote: >> zawartosc: >> tabela1 >> A >> A >> A >> B >> B >> >> tabela2 >> A >> B >> C >> >> chce dac takie zapyatnie ktore po zlaczeniu, zliczeniu tabel wypisalo by >> taki wynik >> A - 3 razy >> B - 2 razy >> C - 0 razy ( I TU MAM PROBLEM!!!!!!!) > > Na przykład tak: > > select tabela2_pole as wartosc, > (select count(*) from tabela1 where tabela1_pole = tabela2_pole) as ile > from tabela2; >
ja proponuję
create table tabela1 (pole char(1)) create table tabela2 (pole char(1)) insert into tabela2 values('A') insert into tabela2 values('B') insert into tabela2 values('C')
insert into tabela1 values('A') insert into tabela1 values('A') insert into tabela1 values('A') insert into tabela1 values('B') insert into tabela1 values('B')
select tabela2.pole, count(tabela1.pole) from tabela2 left outer join tabela1 on tabela2.pole = tabela1.pole group by tabela2.pole
w mssql śmiga tak, jak chcesz...
ale
select tabela2.pole as wartosc, (select count(*) from tabela1 where tabela1.pole = tabela2.pole) as ile from tabela2
też śmiga!
O. Zbadałem Execution plan i wychodzi, że 1 rozwiązanie bardziej optymalne od drugiego, o kilka procent: Query 1: Query cost (relative to the batch) 53,33% Query 2: Query cost (relative to the batch) 46,67%
A więc to pierwsze rozwiąznie bardziej opłacalne!
Serdeczne pozdrowienia Marcin Pawelec
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 06-01-2007 00:02
koralgol1955@o2.pl wrote: > Witam! > rece mi opadaja albo jestem juz zmeczony albo ja juz nie wiem... > mam dwie tabele np. > tabela1 ( tabela1_pole char(100) ) > tabela2 ( tabela2_pole char(100) ) > > zawartosc: > tabela1 > A > A > A > B > B > > tabela2 > A > B > C > > chce dac takie zapyatnie ktore po zlaczeniu, zliczeniu tabel wypisalo by taki > wynik > A - 3 razy > B - 2 razy > C - 0 razy ( I TU MAM PROBLEM!!!!!!!) > > Jak to osiagnac?? > Jzu probowalem rozne rodzaja zlaczen left join itd i nic nie wychodzi ciagle > pokazuje mi zliczenia tych wartosci tabeli 2 ktore wystepuja w tabeli 1 raz i > wiecej ale nie pokazuje mi zero tych wartosci ktore nie wystepuja
Robisz jakiś błąd, ale nie wskażemy Ci go, bo nie pokazałeś zapytania, które próbowałeś.
-- P.M.
koralgol1955@o2.pl - 06-01-2007 00:02
> > Użytkownik "Michał Kuratczyk" <kura@lj.pl> napisał w wiadomości > news:enlnab$jfi$1@mx1.internetia.pl... > > koralgol1955@o2.pl wrote: > >> zawartosc: > >> tabela1 > >> A > >> A > >> A > >> B > >> B > >> > >> tabela2 > >> A > >> B > >> C > >> > >> chce dac takie zapyatnie ktore po zlaczeniu, zliczeniu *tabel wypisalo by > >> taki wynik > >> A - 3 razy > >> B - 2 razy > >> C - 0 razy ( I TU MAM PROBLEM!!!!!!!) > > > > Na przykład tak: > > > > select tabela2_pole as wartosc, > > (select count(*) from tabela1 where tabela1_pole = tabela2_pole) as ile > > from tabela2; > > > > ja proponuję > > create table tabela1 (pole char(1)) > create table tabela2 (pole char(1)) > insert into tabela2 values('A') > insert into tabela2 values('B') > insert into tabela2 values('C') > > insert into tabela1 values('A') > insert into tabela1 values('A') > insert into tabela1 values('A') > insert into tabela1 values('B') > insert into tabela1 values('B') > > select tabela2.pole, count(tabela1.pole) from tabela2 left outer join > tabela1 on tabela2.pole = tabela1.pole group by tabela2.pole > > w mssql śmiga tak, jak chcesz... > > ale > > select tabela2.pole as wartosc, (select count(*) from tabela1 where > tabela1.pole = tabela2.pole) as ile from tabela2 > > też śmiga! > > niestety nie Thank you15:48:33
niestety nie dziala w postgresql
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 06-01-2007 00:02
koralgol1955@o2.pl wrote: > niestety nie dziala w postgresql Działa, działa. Jedno i drugie. Bądź bardziej wylewny - jak masz z czymś problem, to opisz jaki, a nie tylko "nie działa".
-- Michał Kuratczyk
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.plown-team.pev.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 |
|