dzięki juz problem został rozwiązany:

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 24 lutego 2014 10:14 użytkownik Waldemar Dymkiewicz <waldemar.dymkiewicz@easy-com.pl> napisał:
W dniu 2014-02-22 21:58, Sylwek pisze:
> 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.

Tak na szybko, pewnie z błędem bo nie sprawdzalem tego

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