ďťż
 
Problem z zapytaniem SQL ďťż
 
Problem z zapytaniem 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

Problem z zapytaniem SQL



Fantom - 03-02-2006 09:53
Problem z zapytaniem SQL
  Witam
mam zapytanie typu
SELECT suma(x), suma(y)
from tab1 left join tab2

No i x jest z tab1 a y z tab2. Po takim zapytaniu suma(y) raczej zawsze jest
ok, ale suma (x) czasmi jest zawyzona, bo np jest kilka rekordow z tab 2
pasujacych do joina i wtedy powielane sa dane z tab1 i sumowane kilka razy.
Jak tego uniknac ?

Fantom
odpowiedz moze byc do dowolnej bazy danych - jakos dopasuje do swojej





Marek Malczewski - 03-02-2006 09:53

  Fantom wrote:

> Witam
> mam zapytanie typu
> SELECT suma(x), suma(y)
> from tab1 left join tab2
>
> No i x jest z tab1 a y z tab2. Po takim zapytaniu suma(y) raczej zawsze
> jest ok, ale suma (x) czasmi jest zawyzona, bo np jest kilka rekordow z
> tab 2 pasujacych do joina i wtedy powielane sa dane z tab1 i sumowane
> kilka razy. Jak tego uniknac ?
>
> Fantom
> odpowiedz moze byc do dowolnej bazy danych - jakos dopasuje do swojej

Ja bym sprobowal czegos zblizonego do tego:
select (select sum(x) from tab1), (select sum(y) from tab2)




Fantom - 03-02-2006 09:54

  > > Witam
> > mam zapytanie typu
> > SELECT suma(x), suma(y)
> > from tab1 left join tab2
> >
> > No i x jest z tab1 a y z tab2. Po takim zapytaniu suma(y) raczej zawsze
> > jest ok, ale suma (x) czasmi jest zawyzona, bo np jest kilka rekordow z
> > tab 2 pasujacych do joina i wtedy powielane sa dane z tab1 i sumowane
> > kilka razy. Jak tego uniknac ?
> >
> > Fantom
> > odpowiedz moze byc do dowolnej bazy danych - jakos dopasuje do swojej
>
> Ja bym sprobowal czegos zblizonego do tego:
> select (select sum(x) from tab1), (select sum(y) from tab2)

Tak mialem oryginalnie, ale zapytanie jest dluuuugie (kilkadziesiat linijek)
i nie bylo optymalne - chce to jakos przerobic aby bylo szybsze

Fantom




Kedzier - 03-02-2006 09:54

  Fantom napisał(a):
> Witam
> mam zapytanie typu
> SELECT suma(x), suma(y)
> from tab1 left join tab2
>
> No i x jest z tab1 a y z tab2. Po takim zapytaniu suma(y) raczej zawsze jest
> ok, ale suma (x) czasmi jest zawyzona, bo np jest kilka rekordow z tab 2
> pasujacych do joina i wtedy powielane sa dane z tab1 i sumowane kilka razy.
> Jak tego uniknac ?

he, a gdzie pola łączące?
na moj gust brakuje ci klałzuli 'on' wiec baza daje ci jakies dziwne
zlaczenie w rodzaju cross join, a przynajmniej tak mi sie wydaje! i
dlatego pewnie ci zawyża sumy!

pozdr,
Piotrek





Fantom - 03-02-2006 09:55

  > > Witam
> > mam zapytanie typu
> > SELECT suma(x), suma(y)
> > from tab1 left join tab2
> >
> > No i x jest z tab1 a y z tab2. Po takim zapytaniu suma(y) raczej zawsze
jest
> > ok, ale suma (x) czasmi jest zawyzona, bo np jest kilka rekordow z tab 2
> > pasujacych do joina i wtedy powielane sa dane z tab1 i sumowane kilka
razy.
> > Jak tego uniknac ?
>
> he, a gdzie pola łączące?
> na moj gust brakuje ci klałzuli 'on' wiec baza daje ci jakies dziwne
> zlaczenie w rodzaju cross join, a przynajmniej tak mi sie wydaje! i
> dlatego pewnie ci zawyża sumy!

Spokojnie :) w tej bazie takie zapyanie laczy po kluczu wiec pod tym katem
jest wszytsko ok. Dziala jak najbardzie prawidlowo to zlaczenie. chodzi o
to, ze dla jednego tab1 moze byc np 5 razy tab2. I wtedy tab1 jest 5 razy
sumowane i wychodzi bzdura

Fantom




red jamezz - 03-02-2006 09:55

  Fantom <szczukot@skasujto.poczta.onet.pl> napisał(a):

> Witam
> mam zapytanie typu
> SELECT suma(x), suma(y)
> from tab1 left join tab2
>
> No i x jest z tab1 a y z tab2. Po takim zapytaniu suma(y) raczej zawsze jest
> ok, ale suma (x) czasmi jest zawyzona, bo np jest kilka rekordow z tab 2
> pasujacych do joina i wtedy powielane sa dane z tab1 i sumowane kilka razy.
> Jak tego uniknac ?
>
> Fantom
> odpowiedz moze byc do dowolnej bazy danych - jakos dopasuje do swojej
>

a tak ?

SELECT suma(x) from tab1
union all
SELECT suma(y) from tab2

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




Fantom - 04-02-2006 14:52

  > a tak ?
>
> SELECT suma(x) from tab1
> union all
> SELECT suma(y) from tab2

takie cos nie zadziala bo musza byc powiazane wybrane i na dodatek maja
lezec w jednym rekordzie

Fantom
  • 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?= [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?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.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