select
coalesce(e.goodid, r.goodid) as goodid,
coalesce(r.count_remanent, 0) - coalesce(e.count_in_emporium, 0) as result
from
tabela1 e
full outer join
tabela2 r using (goodid)
W dniu 2014-02-22 21:58, Sylwek pisze:
Tak na szybko, pewnie z błędem bo nie sprawdzalem tego> Witam,
> Chciałem rozwiązać następujący problem z zapytaniem sql:
>
> tabela1
> goodid | count_in_emporium
> --------+-------------------
> 0 | 157.00
> 1 | -170.00
> 2 | -36.00
> 3 | -99.00
> 4 | -10.00
> 7 | -12.00
> 12 | 3.00
> 13 | -15.00
> 16 | 12.00
> (9 rows)
>
> tabela2
> goodid | count_remanent
> --------+-------
> 1 | 10.00
> 7 | 12.00
> 13 | 9.00
> (3 rows)
>
> Jak zadać pytanie gdzie wynikiem bedzie tabela o dwóch kolumnach:
> goodid | count_remanent - count_in_emporium
> -------+----------------------
> -------------
> 0 | 157.00
> 1 | 180.00
> 2 | 36.00
> 3 | 99.00
> 4 | 10.00
> 7 | 24.00
> 12 | -3.00
> 13 | 24.00
> 16 | -12.00
>
>
> w drugiej kolumnie jest wynik odejmowania wartości kolumn z dwóch tabel
> przy zachowaniu warunku równości pola goodid, ale jeżeli w jednej z
> tabel nie ma zadanej wartości goodid to pole count****** ma wartośc zero
> ilość rekordów w tabelach może być różna. Czasami więcej rekordów będzie
> w tabeli 1 czasami w tabeli 2.
SELECT goodid, count_remanent - count_in_emporium FROM tables1 t1
LEFT JOIN tables2 t2 ON t1.goodid = t2.goodid
--
Waldemar Dymkiewicz, administrator urządzeń sieciowych
"Easy Com" Świątek Piotr, ul. Jodłowa 7, Góra
tel. 65 544 18 82 wew. 4
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms