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?
Author: Konrad Kondracki
Date: Sun, 23 May 1999 11:52
Date: Sun, 23 May 1999 11:52
40 lines
1986 bytes
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?
Author: Kasar Soft
Date: Mon, 24 May 1999 00:54
Date: Mon, 24 May 1999 00:54
15 lines
1024 bytes
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?
Author: Mundek
Date: Mon, 24 May 1999 06:17
Date: Mon, 24 May 1999 06:17
42 lines
2207 bytes
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?
Author: Marcin Leliwa
Date: Tue, 25 May 1999 08:03
Date: Tue, 25 May 1999 08:03
67 lines
2916 bytes
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