ďťż
 
Zagnieżdżony SQL ďťż
 
Zagnieżdżony SQL
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

Zagnieżdżony SQL



Floran - 10-02-2007 00:02
Zagnieżdżony SQL
  Witam !

Nie wiem, czy dobrze określiłem mój problem ale chyba właśnie o
zagnieżdżenie chodzi :/
Mam taki problem, który próbowałem rozwiązać przy pomocy archiwum grupy,
tutoriali znalezionych w necie ale nie protrafię sobie z tym poradzić. Jeśli
ktoś może mi pomóc to będę wdzięczny.
Mam taką tabelę z danymi

kod symbol
711 OP
711 WD
711 CZ
712 OD
712 OD
712 WD
712 CZ
715 OD
715 OD
715 OP
715 WD
715 CZ

Z takiej tabeli wybrać kody, które w symbolu mają WD i CZ ale nie mają OP.
Kody 711 i 715 posiadają symbole WD i CZ ale jednocześnie posiadają OP więc,
nie spełniają mojego warunku.
W tym wypadku powinien być wybrany tylko kod 712.
To jest tylko przykład - moja tabela z danymi zawiera ok.100tyś rekordów.

Baza danych to Firebird 1.5

pozdrawiam





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 10-02-2007 00:02

  Floran wrote:
> Witam !
>
> Nie wiem, czy dobrze określiłem mój problem ale chyba właśnie o
> zagnieżdżenie chodzi :/
> Mam taki problem, który próbowałem rozwiązać przy pomocy archiwum grupy,
> tutoriali znalezionych w necie ale nie protrafię sobie z tym poradzić. Jeśli
> ktoś może mi pomóc to będę wdzięczny.
> Mam taką tabelę z danymi
>
> kod symbol
> 711 OP
> 711 WD
> 711 CZ
> 712 OD
> 712 OD
> 712 WD
> 712 CZ
> 715 OD
> 715 OD
> 715 OP
> 715 WD
> 715 CZ
>
> Z takiej tabeli wybrać kody, które w symbolu mają WD i CZ ale nie mają OP.
> Kody 711 i 715 posiadają symbole WD i CZ ale jednocześnie posiadają OP więc,
> nie spełniają mojego warunku.
> W tym wypadku powinien być wybrany tylko kod 712.
> To jest tylko przykład - moja tabela z danymi zawiera ok.100tyś rekordów.

Żaden zagnieżdżony SQL (a w zasadzie co to za cudo?).

Select kod from tab
where symbol in ('WD','CZ','OP') -- to dla przyspieszenia, nie ma znaczenia
-- dla wyniku.
group by kod
having sum(case when symbol = 'WD' then 1 end) > 0
and sum(case when symbol = 'CZ' then 1 end) > 0
and sum(case when symbol = 'OP' then 1 end) = 0

--
P.M.




Floran - 13-02-2007 00:04

  > Select kod from tab
> where symbol in ('WD','CZ','OP') -- to dla przyspieszenia, nie ma
> znaczenia
> -- dla wyniku.
> group by kod
> having sum(case when symbol = 'WD' then 1 end) > 0
> and sum(case when symbol = 'CZ' then 1 end) > 0
> and sum(case when symbol = 'OP' then 1 end) = 0

Niestety zwracana jest wartość null :(

kod
null




Cavallino - 13-02-2007 00:04
=?iso-8859-2?Q?Re:_Zagnie=BFd=BFony_SQL?=
 
Użytkownik "Floran" <floran@op.pl> napisał w wiadomości
news:eqp2sl$24u$1@news.onet.pl...
>> Select kod from tab
>> where symbol in ('WD','CZ','OP') -- to dla przyspieszenia, nie ma
>> znaczenia
>> -- dla wyniku.
>> group by kod
>> having sum(case when symbol = 'WD' then 1 end) > 0
>> and sum(case when symbol = 'CZ' then 1 end) > 0
>> and sum(case when symbol = 'OP' then 1 end) = 0
>
> Niestety zwracana jest wartość null :(
>
> kod
> null

A co masz w tym polu kod?





Floran - 13-02-2007 00:04

  > A co masz w tym polu kod?
null




Cavallino - 13-02-2007 00:04
=?iso-8859-2?Q?Re:_Zagnie=BFd=BFony_SQL?=
 
Użytkownik "Floran" <floran@op.pl> napisał w wiadomości
news:eqp3q6$40q$1@news.onet.pl...
>> A co masz w tym polu kod?
> null

No to byś chciał widzieć?
Masz null, widzisz null.

Jakbyś chciał widzieć coś innego niż zawartość pola kod, to musisz to coś
innego w select wyświetlić (wyliczyć) zamiast wyświetlać pole kod.




Floran - 13-02-2007 00:04

  > No to byś chciał widzieć?
> Masz null, widzisz null.
>
> Jakbyś chciał widzieć coś innego niż zawartość pola kod, to musisz to coś
> innego w select wyświetlić (wyliczyć) zamiast wyświetlać pole kod.

Na początku pytania podałem tabelę wraz z dannymi które się tam znajdują.
Tam napisałem co powinno być widoczne po zapytaniu (jeśli to możliwe
oczywiście).
W tym przypadku powinna być zwrócona wartość 712, gdyż tylko rekord o
wartości pola kod 712 odpowiada temu.




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-02-2007 00:04

  Floran wrote:
>> Select kod from tab
>> where symbol in ('WD','CZ','OP') -- to dla przyspieszenia, nie ma
>> znaczenia
>> -- dla wyniku.
>> group by kod
>> having sum(case when symbol = 'WD' then 1 end) > 0
>> and sum(case when symbol = 'CZ' then 1 end) > 0
>> and sum(case when symbol = 'OP' then 1 end) = 0
>
> Niestety zwracana jest wartość null :(
>
> kod
> null

A zamień wszystkie sum na count.

--
P.M.




Floran - 14-02-2007 00:02

  > A zamień wszystkie sum na count.
>

Tak, teraz działa.
Mam nadzieję, że na większej ilości danych będzie działać prawidłowo ;)
Wielkie dzięki.

pozdrawiam
  • 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?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czterowers.keep.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