=?ISO-8859-2?Q?[Postgres]_Not_in_czy_jest_co=B6_takiego_=3F?=
Marcin Balawejder - 21-03-2006 01:00
=?ISO-8859-2?Q?[Postgres]_Not_in_czy_jest_co=B6_takiego_=3F?=
Tabela zawiera elementy drzewa kategorii w sklepie internetowym id_category, id_root, - identyfikator kategorii nadrzędnej.. category_name
Chcę wyciągnąć wszystkie liście czyli te kategorie, które są na najniższym poziomie tzn. takie, które nie są rodzicami dla żadnej kategorii.
Piszę sobie selecta :
SELECT id_category, id_root, category_name FROM category cat WHERE id_category not in (select id_root from category group by id_root) ORDER BY id_category
ale dlaczego mi nic nie zwraca ? ani jednego rekordu... coś nie tak z 'not in' ?
:)
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Piotr 'piter' Hlawski - 21-03-2006 01:00
Marcin Balawejder wrote:
> [Postgres] Not in czy jest coś takiego ?
Oczywiście, że jest :)
[...]
> ale dlaczego mi nic nie zwraca ? > ani jednego rekordu... > coś nie tak z 'not in' ?
NOT IN działa na bank tak jak można się tego spodziewać, pytanie tylko co tak naprawdę zwraca ci podzapytanie - podaj więcej danych, bo moja szklana kula ma dzisiaj wolne ;)
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Wielki Mór Chiński powstał by powstrzymać Chucka Norrisa. Nie udało mu się.
Marcin Balawejder - 21-03-2006 01:00
=?ISO-8859-2?Q?Re:_[Postgres]_Not_in_czy_jest_co=B6_takiego_=3F?=
Piotr 'piter' Hlawski <phlawski@cut_this_crap.gmail.com> napisał(a):
> > NOT IN działa na bank tak jak można się tego spodziewać, pytanie tylko co > tak naprawdę zwraca ci podzapytanie - podaj więcej danych, bo moja szklana > kula ma dzisiaj wolne ;) >
No dobra, sam tego nie mogę pojąć :) Bo właśnie nic mi nie zwraca :)
www.mbbc.pl/priv/category.sql
natomiast gdy wrzucę w WHERE
id_category not in (select id_root from category where id_root <> null group by id_root)
zwraca mi, ale nie to co trzeba..
albo mi się mózg zlansował dzisiaj, albo coś nie tak z postgresem 7.4.7 :)
A w ogóle to pozdrawiam :) wejder
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Grzegorz Danowski - 21-03-2006 01:00
=?iso-8859-2?Q?Re:_=5BPostgres=5D_Not_in_czy_jest_co=B6_takie go_=3F?=
Użytkownik "Marcin Balawejder" <wejder@WYTNIJ.gazeta.pl> napisał w wiadomości news:dvmiks$4qh$1@inews.gazeta.pl... > Tabela zawiera elementy drzewa kategorii w sklepie internetowym > id_category, > id_root, - identyfikator kategorii nadrzędnej.. > category_name > > Chcę wyciągnąć wszystkie liście czyli te kategorie, które są na najniższym > poziomie tzn. takie, które nie są rodzicami dla żadnej kategorii. > > Piszę sobie selecta : > > SELECT > id_category, > id_root, > category_name > FROM > category cat > WHERE > id_category not in (select id_root from category group by id_root) > ORDER BY > id_category > > ale dlaczego mi nic nie zwraca ? > ani jednego rekordu... > coś nie tak z 'not in' ? >
spróbuj tak:
SELECT id_category, id_root, category_name FROM category cat WHERE Not Exists (select * from category as root where root.id_root = cat.id_category) ORDER BY id_category
GD
Ps. Co do pytania z drugiego posta, to zamiast <> Null użyj Is Not Null.
Piotr 'piter' Hlawski - 21-03-2006 01:00
Marcin Balawejder wrote: [...] > No dobra, sam tego nie mogę pojąć :) > Bo właśnie nic mi nie zwraca [...]
Dla potomnych ;).. this do the trick:
SELECT id_category FROM category WHERE id_category NOT IN (SELECT coalesce(id_root,0) FROM category GROUP BY id_root) ORDER BY id_category;
problemem był NULL w podzapytaniu ...
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Kiedyś Chuck Norris zestrzelił niemiecki samolot swoim palcem, mówiąc: "Bang!".
Grzegorz Danowski - 22-03-2006 00:05
=?iso-8859-2?Q?Re:_=5BPostgres=5D_Not_in_czy_jest_co=B6_takie go_=3F?=
Użytkownik "Piotr 'piter' Hlawski" <phlawski@cut_this_crap.gmail.com> napisał w wiadomości news:9854133.HiRSUl4UTV@zatoichi.homeunix.org... > Marcin Balawejder wrote: > [...] >> No dobra, sam tego nie mogę pojąć :) >> Bo właśnie nic mi nie zwraca > [...] > > Dla potomnych ;).. this do the trick: > > SELECT id_category FROM category WHERE id_category NOT IN (SELECT > coalesce(id_root,0) FROM category GROUP BY id_root) ORDER BY id_category; > > problemem był NULL w podzapytaniu ...
To nie lepiej wyrzucić Nulle z podzapytania (Where id_root Is Not Null)? GD
Piotr 'piter' Hlawski - 22-03-2006 00:05
Grzegorz Danowski wrote:
> Użytkownik "Piotr 'piter' Hlawski" <phlawski@cut_this_crap.gmail.com> > napisał w wiadomości news:9854133.HiRSUl4UTV@zatoichi.homeunix.org... >> Marcin Balawejder wrote: >> [...] >>> No dobra, sam tego nie mogę pojąć :) >>> Bo właśnie nic mi nie zwraca >> [...] >> >> Dla potomnych ;).. this do the trick: >> >> SELECT id_category FROM category WHERE id_category NOT IN (SELECT >> coalesce(id_root,0) FROM category GROUP BY id_root) ORDER BY id_category; >> >> problemem był NULL w podzapytaniu ... > > To nie lepiej wyrzucić Nulle z podzapytania (Where id_root Is Not Null)?
Tak też radziłem koledze poza grupą, ale później mi przyszło do głowy coalesce - w końcu to o jednego where mniej. W zasadzie to trzeba by zrobić EXPLAIN'a przy dużej ilości danych w obydwu wersjach zapytania.
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Chuck Norris używa lampki nocnej. Nie dlatego, że Chuck Norris boi się ciemności, to ciemność boi się Chucka Norrisa.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plradioaktywni.htw.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 |
|