odejmowanie w mysql

0

Witam serdecznie. Proszę o pomoc - mam taki problem:
mam dwie tabele jedna z przychodami (m.i. pola idmb, ilosc) druga z rozchodami (idm,ile). Zrobiłem zapytanie na odejmowanie

SELECT
(Sum(przychody.ilosc)-(SELECT Sum(rozchody.ile)
FROM rozchody where rozchody.idm=:nr)) AS wynik
FROM
przychody where przychody.idmb=:nr

Niestety działa to tylko gdy jakikolwiek wiersz istnieje w tabeli rozchody. Jeśli go nie ma to wynik jest pusty. Nie wiem jak sobie z tym poradzić. Czy możecie coś podpowiedzieć.

nr jest parametrem

0

Zastosuj UNIĘ (coś takiego jak poniżej)

SELECT SUM(ile) FROM (
(SELECT ilosc as ile FROM przychody WHERE WarunekA)
UNION
(SELECT -1*ile FROM rozchody WHERE WarunekB))
0

ta druga część (SELECT -1*ile FROM rozchody WHERE WarunekB)) wyrzuca mi błąd: błędne dane będa pokazywane jako null (o ile to możliwe). W wyniku dostaję dwie dane na ekranie - sumę przychodów + pustą daną. chyba nie oto chodziło. Chciałbym dostać wynik tylko róznicy przychodów i rozchodów nawet jesli nie ma rozchodów. Może jest jeszcze jakiś inny sposób bądź modyfikacja z union.

proszę o sugestie

0

Sprawdź to. Oczywiście WrunekA i WarunekB zamień na odpowiedni zgodnie z tym co chcesz wyszukać w tych tabelach.

SELECT SUM(ile) FROM (
(SELECT ilosc as ile FROM przychody WHERE WarunekA)
UNION
(SELECT -1*ile as ile FROM rozchody WHERE WarunekB))

Czy twoja baza dopuszcza null w polu "ile"? Jeśli tak to wyfiltruj te rekordy które mają null.

0

Niby powinno działać ale u mnie wywala błąd cały czas. Jeśli wyrzucę to SELECT SUM(ile) przed zapytaniem to reszta działa. Mam mysql 4.1.21. Nie wiem czy ma znaczenie ilość kolumn w przychodach i rozchodach. U mnie są różne. Null mam niemożliwy.

0

Hallo Marianek121212!

To dziala ("quick and dirty" - syntax dla SQLServer):

select id, sum(kwota1),  sum(kwota2), sum(kwota1) - sum(kwota2) from
(
	select id, sum(kwota) as kwota1, sum(0)     as kwota2 from rozchody
	group by id
	union
	select id, sum(0)     as kwota1, sum(kwota) as kwota2 from przychody
	group by id
) as zestawienie
group by id
order by id

Pozdrawiam
Markus

0

Działa. O to właśnie chodziło ! Stawiam [browar] Dzięki wielkie za POMOC !

1 użytkowników online, w tym zalogowanych: 0, gości: 1