having - problem
::Marcin:: - 29-12-2006 00:25
having - problem
Witam,
mam problem z przefiltrowaniem zwruconych danych. Zapytanie ktore konczy sie klauzula group by zwraca takie przykładowe dane:
nazwa|cena -------------- test | 2,5 -------------- test2 | NULL -------------- test3 | NULL -------------- test4 | 3,2 -------------- test5 | NULL
poniewaz w zapytaniu wykorzystuje left join to podczas zlaczenia dwuch tabel powyzsze wartosci NULL w zwroconych rekordach sa wpisywane automatycznie przez serewer MS SQL
Chciałbym za pomoca having przefiltrowac dane jak zrobie having cena > 0 dostaje tylko pierwszy i czwarty rekord z powzszej tabeli. Chcialbym zwrocic wszystkie rekordy oprocz pierwszego i czwartego czyli tylko te gdzie jest NULL probowalem zrobic tak: having cena = NULL ale to nie dziala nie zwraca mi zadnych rekordow. Czekam na wasze sugestie :-)
Pozdro... Wszystkiego dobrego w Nowym Roku 2007
Grzegorz Danowski - 29-12-2006 00:25
"::Marcin::" <zouaidia@gazeta.pl> wrote in message news:en13ok$25u$1@inews.gazeta.pl... .... > dostaje tylko pierwszy i czwarty rekord z powzszej tabeli. Chcialbym > zwrocic > wszystkie rekordy oprocz pierwszego i czwartego czyli tylko te gdzie jest > NULL probowalem zrobic tak: having cena = NULL ale to nie dziala nie > zwraca > mi zadnych rekordow.
....podstawy się kłaniają: cena Is Null No i nie wiem czy rzeczywiście potrzebujesz Having a nie Where. G.
Piotr KUCHARSKI - 29-12-2006 00:25
::Marcin:: <zouaidia@gazeta.pl> wrote: > NULL probowalem zrobic tak: having cena = NULL ale to nie dziala nie zwraca > mi zadnych rekordow.
Przy NULL zawsze "IS NULL".
p.
-- http://freedns.sgh.waw.pl/ -- bezpłatny DNS. http://nerdquiz.sgh.waw.pl/ -- polska wersja quizu dla nerdów. http://42.pl/u/ -- skracacz URL-i.
::Marcin:: - 29-12-2006 00:25
co do podstaw to macie racje czasami wychodza braki :-)
Wybralem having zamiast where tak z czystej ciekawosci Oczywiscie mozna by to zrobic z where tyle tylko ze roznica polega a tym ze where "filtruje" dane przed zwroceniem a having "filtruje" juz zwrocone wyniki i dlatego z czystej mojej ciekawosci zastosowalem ta mozliwosc.
Pomijajac moje zaciekawienie przy wiekszej ilosci rekordow lepiej bylo by uzyc where zamiast zwracac full rekordow i potem je jeszcze "filtrowac"
Co o tym sadzicie ?
Borafu - 29-12-2006 00:25
Piotr KUCHARSKI napisał(a): > ::Marcin:: <zouaidia@gazeta.pl> wrote: >> NULL probowalem zrobic tak: having cena = NULL ale to nie dziala nie zwraca >> mi zadnych rekordow. > > Przy NULL zawsze "IS NULL".
No nie, przecież można dać cecha = NULL wynik co prawda będzie zawsze "false", ale da się ;-)
Pozdro -- Borafu
hubert depesz lubaczewski - 29-12-2006 00:25
On 2006-12-28, Borafu <borafu_NIELUBIESPAMU@gazeta.pl> wrote: > No nie, przecież można dać cecha = NULL > wynik co prawda będzie zawsze "false", ale da się ;-)
jakie będą te wyniki? cecha = NULL nie zwraca false!
depesz
-- rower trekkingowy od złotówki http://www.allegro.pl/item151225399_...ywany_bcm.html
hubert depesz lubaczewski - 29-12-2006 00:25
On 2006-12-28, ::Marcin:: <zouaidia@gazeta.pl> wrote: > Co o tym sadzicie ?
o czym? o tym, że nie rozumiesz do czego służy having a do czego where? having słuzy do pracy na danych zagregowanych. czyli np. do czegoś takieg: select id_klienta, count(*) from zamowienia group by id_klienta having count(*) > 10;
where pracuje na danych w tabeli a nie na agregatach.
technicznie - da się havingiem odwołać do danych z tabeli, ale w ten sposób zabijasz sobie wydajność.
depesz
-- rower trekkingowy od złotówki http://www.allegro.pl/item151225399_...ywany_bcm.html
::Marcin:: - 29-12-2006 00:25
> o czym? o tym, że nie rozumiesz do czego służy having a do czego where? > having słuzy do pracy na danych zagregowanych. > czyli np. do czegoś takieg: > select id_klienta, count(*) from zamowienia group by id_klienta having count(*) > 10; > > where pracuje na danych w tabeli a nie na agregatach. doskonale rozumiem roznice miedzy where a heving co zreszta mozna bylo wyczytac z mojego ostatniego postu
> technicznie - da się havingiem odwołać do danych z tabeli, ale w ten > sposób zabijasz sobie wydajność. i o taka wlasnie odpowiedz mi chodzilo :-)
Borafu - 29-12-2006 00:25
hubert depesz lubaczewski napisał(a): > On 2006-12-28, Borafu <borafu_NIELUBIESPAMU@gazeta.pl> wrote: >> No nie, przecież można dać cecha = NULL >> wynik co prawda będzie zawsze "false", ale da się ;-) > > jakie będą te wyniki? > cecha = NULL nie zwraca false!
Oops! Spałem cztery godziny. A teraz wstyd :-(
Pozdro -- Borafu
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
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
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.plnatalia97.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 |
|