ďťż
 
Podzapytanie SQL ďťż
 
Podzapytanie 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

Podzapytanie SQL



Fantom - 20-01-2006 20:24
Podzapytanie SQL
  Witam
chcialbym zrobic zapytanie SQL w stylu
SELECT x,y, (SELECT a,b,c,d from xxxx where yyyy itd)
from aaa
i dostac na wyjscie x,y,a,b,c,d.
Podzapytanie jest bardzo skomplikowane pod wzgledem obliczniowym bazy -
czyli trwa dlugo. No i teraz jak zrobic, aby dla kazdej pozycji glownej
zapytania, tamto podzapytanie bylo liczone tylko raz i abym mogl z niego
pobrac od razu kilka danych, a nie cos w stylu:
SELECT x,y,
(SELECT a from xxxx where yyyy itd),
(SELECT b from xxxx where yyyy itd)
(SELECT c from xxxx where yyyy itd)
(SELECT drom xxxx where yyyy itd)
from aaa

Fantom





Sergiusz Rozanski - 20-01-2006 20:24

  Dnia 20.01.2006 Fantom <szczukot@skasujto.poczta.onet.pl> napisał/a:
> Witam
> chcialbym zrobic zapytanie SQL w stylu
> SELECT x,y, (SELECT a,b,c,d from xxxx where yyyy itd)
> from aaa
> i dostac na wyjscie x,y,a,b,c,d.
> Podzapytanie jest bardzo skomplikowane pod wzgledem obliczniowym bazy -
> czyli trwa dlugo. No i teraz jak zrobic, aby dla kazdej pozycji glownej
> zapytania, tamto podzapytanie bylo liczone tylko raz i abym mogl z niego
> pobrac od razu kilka danych, a nie cos w stylu:
> SELECT x,y,
> (SELECT a from xxxx where yyyy itd),
> (SELECT b from xxxx where yyyy itd)
> (SELECT c from xxxx where yyyy itd)
> (SELECT drom xxxx where yyyy itd)
> from aaa

może wydajniej widoczek lub:

create temorary table x as select

i dalej już normalny join jaki tam potrzebujesz?
gdy nie ma w podselectach elementów z wierszy głównego zapytania,
to tak będzie lepiej. Nawet gdy są w podzapytaniu wiersze, ale
pozdazpytanie stanowi ułamek tabeli głównej to i tak
często tymczasowa tabela lub widok działa wydajniej.

--
*** rozanski.at.sergiusz.dot.com sq3bkn ***
*** http://jeep.comm.pl ***
*** rtg project http://gg.overwap.net ***




Marcin Mańk - 20-01-2006 20:24

  > Witam
> chcialbym zrobic zapytanie SQL w stylu
> SELECT x,y, (SELECT a,b,c,d from xxxx where yyyy itd)
> from aaa
> i dostac na wyjscie x,y,a,b,c,d.

nie podałeś jaka to baza. I jeszcze podaj, czy to podzapytanie jest
skoreloweane (czy jest w nim używana tabela aaa).

Proste, 'czołgowe' rozwiązanie to:

SELECT x,y, (SELECT sklej_do_stringu(a,b,c,d) from xxxx where yyyy itd)
from aaa

I później obrabianie tego w kliencie.

Pozdrawiam
Marcin Mańk




Fantom - 20-01-2006 20:24

  > nie podałeś jaka to baza. I jeszcze podaj, czy to podzapytanie jest

Sybase, ale szukam ogolnego rozwiazania SQL a potem bede patzral czy Sybase
to obsluguje.

> skoreloweane (czy jest w nim używana tabela aaa).

Jest

> Proste, 'czołgowe' rozwiązanie to:
>
> SELECT x,y, (SELECT sklej_do_stringu(a,b,c,d) from xxxx where yyyy itd)
> from aaa

No fakt :) ale troche toporne. Ale ....

Fantom





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 20-01-2006 20:24

  Fantom wrote:
> Witam
> chcialbym zrobic zapytanie SQL w stylu
> SELECT x,y, (SELECT a,b,c,d from xxxx where yyyy itd)
> from aaa
> i dostac na wyjscie x,y,a,b,c,d.
> Podzapytanie jest bardzo skomplikowane pod wzgledem obliczniowym bazy -
> czyli trwa dlugo. No i teraz jak zrobic, aby dla kazdej pozycji glownej
> zapytania, tamto podzapytanie bylo liczone tylko raz i abym mogl z niego
> pobrac od razu kilka danych, a nie cos w stylu:
> SELECT x,y,
> (SELECT a from xxxx where yyyy itd),
> (SELECT b from xxxx where yyyy itd)
> (SELECT c from xxxx where yyyy itd)
> (SELECT drom xxxx where yyyy itd)
> from aaa

Podzapytanie jest wykonywane tylko raz w dwóch wypadkach. Gdy jest w klauzuli
FROM, lub w warunku IN.
W twoim przypadku możesz spróbować przerzucić podzapytanie i połączyć jego
wyniki z tabelą aaa - czy będzie to szybciej nie wiem, ale powinno. Być może
będzie trzeba przepisać podzapytanie, żeby było wydajne w takiej formie.
Ja podzapytania prawie zawsze umieszczam w FROM (czasami w WHERE) i jak
dotychczas ten sposób się sprawdzał.

--
P.M.
  • 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
  • latwa-kasiora.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com