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.
pozdrawiam Sylwek
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
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
uczestnicy (2)
-
Sylwek
-
Waldemar Dymkiewicz