Centrum Fanów Symulatorów » Hardware & Software » My SQL i PHP
Napisz nowy temat    Odpowiedz do tematu

My SQL i PHP

Idź do strony Poprzedni  1, 2, 3, 4, 5
Autor Wiadomość
Nogal


Dołączył: 18 Sie 2001
Posty: 5672
Miasto: Kraków

Post2008-11-09, 21:49      My SQL i PHP Odpowiedz z cytatem
select
z.id,
z.data,
z.klient,
pz.nrtowaru,
pz.ilosc ilosc_wydana,
pz.ilosc-nvl(zw.ilosc, 0) do_zwrotu
from
zamowienia z inner join pozycjezamowienia pz on z.id = pz.nrzamowienia
left outer join
(select nrpozzamowienia, sum(ilosc) ilosc from zwroty zw group by nrpozzamowienia) zw on pz.id = zw.nrpozzamowienia

Musisz zrobić podzapytanie, zeby zsumowac zwroty:
(select nrpozzamowienia, sum(ilosc) ilosc from zwroty zw group by nrpozzamowienia) zw

i pozniej zrobic left outer join z zamowieniami, poniewaz nie do kazdego zamowienia masz zwrot.

Na koniec odejmujesz pz.ilosc-nvl(zw.ilosc, 0) do_zwrotu - nvl to funkcja w oracle'u ktora dla nulla zwraca ci podana wartosc - w tym przypadku 0. Tu musisz podstawić odpowiednik z Accessa.
 
Reklamy
Speedy Alfa
159

Dołączył: 17 Sie 2001
Posty: 5076
Miasto: Poznań

Post2008-11-09, 23:41      My SQL i PHP Odpowiedz z cytatem
O rany, dzięki Nogal. Chwilę to potrwa zanim to strawię
 
Speedy Alfa
159

Dołączył: 17 Sie 2001
Posty: 5076
Miasto: Poznań

Post2008-11-10, 14:17      My SQL i PHP Odpowiedz z cytatem
Działa :)
Dzięki Nogal jeszcze raz. NVL było tym co mi potrzeba (W Accessie jest to NZ) Nie znałem tej funkcji więc kombinowałem jak koń pod górke i ciągle dostawałem zwrot tylko tych wierszy dla których były jakieś zwroty wpisane

Ostatecznie query wygląda tak:
Kod:
SELECT
Zamowienia.ID,
Zamowienia.Data,
Zamowienia.Klient,
PozycjeZamowienia.NrTowaru,
PozycjeZamowienia.Ilosc,
SumaZwrotow.SumOfIlosc AS Zwrocono,
PozycjeZamowienia.Ilosc-Nz(SumaZwrotow.SumOfIlosc,0) AS Ilosc_Do_Zwrotu
FROM (Zamowienia LEFT JOIN PozycjeZamowienia ON Zamowienia.[ID] = PozycjeZamowienia.[NrZamowienia])
LEFT JOIN SumaZwrotow ON PozycjeZamowienia.[ID] = SumaZwrotow.[NrPozZamowienia]
WHERE ((([PozycjeZamowienia].[Ilosc]-Nz([SumaZwrotow].[SumOfIlosc],0))>0));


Niedługo na pewno nowy problem się znajdzie więc pewnie się jeszcze zgłoszę :)
 
Nogal


Dołączył: 18 Sie 2001
Posty: 5672
Miasto: Kraków

Post2008-11-10, 19:12      My SQL i PHP Odpowiedz z cytatem
Spoko - służę pomocą
 
Centrum Fanów Symulatorów » Hardware & Software » My SQL i PHP Idź do strony Poprzedni  1, 2, 3, 4, 5
Napisz nowy temat  Odpowiedz do tematu
Skocz do: