🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
4 messages
4 total messages Started by Konrad Kondracki Sun, 23 May 1999 11:52
Zapytanie w SQL?
#692
Author: Konrad Kondracki
Date: Sun, 23 May 1999 11:52
40 lines
1986 bytes
Mam problem z wykonaniem poprawnie zapytania w SQL.
Jesli ktos moze mi pomoc przedstawie problem.
Mam dwie tabele: KOSZTY i BUDZETY
W tabeli KOSZTY trzymane sa informacje o kosztach roznych firm na
przestrzeni roku z dokladnoscia do tygodnia.
W tabeli BUDZETY trzymana jest wartosc zakladanego budzetu rocznego kazdej z
firm.
Obie tabele maja wspolne relacyjne pola ROK i ID_FIRMY.
Udalo mi sie wygenerowac zapytanie w ktorym otrzymalem zestawienie kosztow i
budzetow z podzielem (group by) na firmy-otrzymalem zestawienie
zrealizowania rocznego budzetu dla kazdej z firm.
Problem wynikl gdy chcialem otrzymac sumaryczny wynik roczny, czyli z lewej
strony koszty wszystkich firm w roku a  z lewej sume roczna zakladanego
budzetu wszystkich z firm.
ZRobione zapytanie generuje bledne wyniki, w szczegole wynik z prawej tabeli
czyli sume budzetu - jest on zbyt duzy tj jakby byl za duzo razy dodawany.
MYsle ze jest problem gdzies ze zlaczeniem w zapytaniu SQL.
Jesli ktos ma jakis pomysl to prosze o podpowiedz. (najlepiej na private).

ZApytanie ktore probuje wykombinowac wyglada tak:
select
A.Rok_tygodnia,
sum(A.Total),
sum(B.Budzet)

from TYDZSUMA A left outer join BUDZETY B on

(A.Rok_tygodnia=B.Rok_tygodnia)

group by
A.Rok_tygodnia

order by
A.Rok_tygodnia



--
Konrad Kondracki
konradk@pol.pl
Re: Zapytanie w SQL?
#693
Author: Kasar Soft
Date: Mon, 24 May 1999 00:54
15 lines
1024 bytes
Sprobuj tak:
SELECT A.Rok_tygodnia, sum(A.Total), cast(null as float)
FROM TYDZSUMA A
GROUP BY A.Rok_tygodnia
UNION ALL
SELECT B.Rok_tygodnia, cast(null as float), sum(B.Budzet )
FROM BUDZETY B
GROUP BY B.Rok_tygodnia

Mam nadzieje, ze wlasciwie zrozumialem Twoje intencje

Pozdrowienia

J.C.
Re: Zapytanie w SQL?
#694
Author: Mundek
Date: Mon, 24 May 1999 06:17
42 lines
2207 bytes
On Sun, 23 May 1999, Konrad Kondracki wrote:

> Mam problem z wykonaniem poprawnie zapytania w SQL.
> Jesli ktos moze mi pomoc przedstawie problem.
> Mam dwie tabele: KOSZTY i BUDZETY
> W tabeli KOSZTY trzymane sa informacje o kosztach roznych firm na
> przestrzeni roku z dokladnoscia do tygodnia.
> W tabeli BUDZETY trzymana jest wartosc zakladanego budzetu rocznego kazdej z
> firm.
> Obie tabele maja wspolne relacyjne pola ROK i ID_FIRMY.
> Udalo mi sie wygenerowac zapytanie w ktorym otrzymalem zestawienie kosztow i
> budzetow z podzielem (group by) na firmy-otrzymalem zestawienie
> zrealizowania rocznego budzetu dla kazdej z firm.
> Problem wynikl gdy chcialem otrzymac sumaryczny wynik roczny, czyli z lewej
> strony koszty wszystkich firm w roku a  z lewej sume roczna zakladanego
> budzetu wszystkich z firm.
> ZRobione zapytanie generuje bledne wyniki, w szczegole wynik z prawej tabeli
> czyli sume budzetu - jest on zbyt duzy tj jakby byl za duzo razy dodawany.
> MYsle ze jest problem gdzies ze zlaczeniem w zapytaniu SQL.
> Jesli ktos ma jakis pomysl to prosze o podpowiedz. (najlepiej na private).
> 

A czemu polaczyles tylko po polu ROK obie tabele. jesli chcesz otrzymac
poprawne wyniki to musisz laczyc sie i po id_firmy.
 
> ZApytanie ktore probuje wykombinowac wyglada tak:
> select
> A.Rok_tygodnia,
> sum(A.Total),
> sum(B.Budzet)
> 
> from TYDZSUMA A left outer join BUDZETY B on
> 
> (A.Rok_tygodnia=B.Rok_tygodnia)
	AND (A.Id_Firmy = B.Id_Firmy)
> 
> group by
> A.Rok_tygodnia
> 

Pozdrowka
	Mundek
Re: Zapytanie w SQL?
#695
Author: Marcin Leliwa
Date: Tue, 25 May 1999 08:03
67 lines
2916 bytes
Wydaje mi się, że budżet na cały rok jest łączony z każdym tygodniem
(iloczyn kartezjański), a dopiero potem sumowane są kwoty. Jeśli tak, to
ja bym poszedł na łatwiznę i uzył jednej z funkcji: max(), min(), avg() na
budżet, ponieważ w ramach roku (i firmy) są zawsze te same wartości.

select A.Rok_tygodnia, sum(A.Total), avg(B.Budzet)
from TYDZSUMA A left outer join BUDZETY B on
(A.Rok_tygodnia=B.Rok_tygodnia)
group by A.Rok_tygodnia
order by A.Rok_tygodnia


Marcin

ps. Grupowanie po firmie też by się przydało.



Konrad Kondracki wrote in message <7i8os2$436$1@info.nask.pl>...
>Mam problem z wykonaniem poprawnie zapytania w SQL.
>Jesli ktos moze mi pomoc przedstawie problem.
>Mam dwie tabele: KOSZTY i BUDZETY
>W tabeli KOSZTY trzymane sa informacje o kosztach roznych firm na
>przestrzeni roku z dokladnoscia do tygodnia.
>W tabeli BUDZETY trzymana jest wartosc zakladanego budzetu rocznego
kazdej z
>firm.
>Obie tabele maja wspolne relacyjne pola ROK i ID_FIRMY.
>Udalo mi sie wygenerowac zapytanie w ktorym otrzymalem zestawienie
kosztow i
>budzetow z podzielem (group by) na firmy-otrzymalem zestawienie
>zrealizowania rocznego budzetu dla kazdej z firm.
>Problem wynikl gdy chcialem otrzymac sumaryczny wynik roczny, czyli z
lewej
>strony koszty wszystkich firm w roku a  z lewej sume roczna zakladanego
>budzetu wszystkich z firm.
>ZRobione zapytanie generuje bledne wyniki, w szczegole wynik z prawej
tabeli
>czyli sume budzetu - jest on zbyt duzy tj jakby byl za duzo razy
dodawany.
>MYsle ze jest problem gdzies ze zlaczeniem w zapytaniu SQL.
>Jesli ktos ma jakis pomysl to prosze o podpowiedz. (najlepiej na
private).
>
>ZApytanie ktore probuje wykombinowac wyglada tak:
>select
>A.Rok_tygodnia,
>sum(A.Total),
>sum(B.Budzet)
>
>from TYDZSUMA A left outer join BUDZETY B on
>
>(A.Rok_tygodnia=B.Rok_tygodnia)
>
>group by
>A.Rok_tygodnia
>
>order by
>A.Rok_tygodnia
>
>
>
>--
>Konrad Kondracki
>konradk@pol.pl
>
>
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads