Witam, chciałbym zapytaniem uzyskać listę wszystkich zadłużonych klientów, których saldo jest wyższe od sumy wszystkich przypisanych do klienta taryf.
Zrobiłem zapytanie, które sumuje mi wszystkie taryfy dla klienta: SELECT assignments.customerid AS customerid, SUM(ROUND((tariffs.value*(100-assignments.discount))/100,2)) AS porabacie FROM assignments LEFT JOIN tariffs ON (tariffs.id = assignments.tariffid) WHERE `suspended`=0 AND (datefrom <= UNIX_TIMESTAMP() OR datefrom = 0) AND (dateto >= UNIX_TIMESTAMP() OR dateto = 0) GROUP BY assignments.customerid
I nie wiem teraz jak mam to złączyć z tabelą cash aby mi pokazywał tych z saldem zadłużenia ponad 100%.
W dniu 2010-08-06 14:29, Łukasz Rostalski pisze:
Witam, chciałbym zapytaniem uzyskać listę wszystkich zadłużonych klientów, których saldo jest wyższe od sumy wszystkich przypisanych do klienta taryf.
Zrobiłem zapytanie, które sumuje mi wszystkie taryfy dla klienta: SELECT assignments.customerid AS customerid, SUM(ROUND((tariffs.value*(100-assignments.discount))/100,2)) AS porabacie FROM assignments LEFT JOIN tariffs ON (tariffs.id = assignments.tariffid) WHERE `suspended`=0 AND (datefrom <= UNIX_TIMESTAMP() OR datefrom = 0) AND (dateto >= UNIX_TIMESTAMP() OR dateto = 0) GROUP BY assignments.customerid
I nie wiem teraz jak mam to złączyć z tabelą cash aby mi pokazywał tych z saldem zadłużenia ponad 100%.
Dla postgresa 8.2.1 cos takiego na 100% dziala niestaty nie wiem czy tej konstrukcji pozwala użyć MySQL
SELECT customers.id, a.porabacie, b.balance FROM customers JOIN (SELECT SUM(ROUND((tariffs.value*(100-assignments.discount))/100,2)) AS porabacie, assignments.customerid FROM assignments LEFT JOIN tariffs ON (tariffs.id = assignments.tariffid) WHERE suspended=0 AND (datefrom <= current_timestamp OR datefrom = 0) AND (dateto >= current_timestamp OR dateto = 0) GROUP BY assignments.customerid) a ON (a.customerid = customers.id) JOIN (SELECT SUM(value) AS balance, customerid FROM cash GROUP BY customerid) b ON (b.customerid = customers.id) GROUP BY customers.id, a.porabacie, b.balance HAVING (a.porabacie * -2) >= b.balance
Dla postgresa 8.2.1 cos takiego na 100% dziala niestaty nie wiem czy tej konstrukcji pozwala użyć MySQL
SELECT customers.id, a.porabacie, b.balance FROM customers JOIN (SELECT SUM(ROUND((tariffs.value*(100-assignments.discount))/100,2)) AS porabacie, assignments.customerid FROM assignments LEFT JOIN tariffs ON (tariffs.id = assignments.tariffid) WHERE suspended=0 AND (datefrom <= current_timestamp OR datefrom = 0) AND (dateto >= current_timestamp OR dateto = 0) GROUP BY assignments.customerid) a ON (a.customerid = customers.id) JOIN (SELECT SUM(value) AS balance, customerid FROM cash GROUP BY customerid) b ON (b.customerid = customers.id) GROUP BY customers.id, a.porabacie, b.balance HAVING (a.porabacie * -2) >= b.balance
Dzięki, działa jak złoto :) Próbowałem podobnie, ale poległem :/
a przerob sobie skrypty perlowe ktore sa i wynik dostaniesz do pliku elegancko
Dnia 06-08-2010 o 14:29:19 Łukasz Rostalski lukasz@rostalski.pl napisał(a):
Witam, chciałbym zapytaniem uzyskać listę wszystkich zadłużonych klientów, których saldo jest wyższe od sumy wszystkich przypisanych do klienta taryf.
Zrobiłem zapytanie, które sumuje mi wszystkie taryfy dla klienta: SELECT assignments.customerid AS customerid, SUM(ROUND((tariffs.value*(100-assignments.discount))/100,2)) AS porabacie FROM assignments LEFT JOIN tariffs ON (tariffs.id = assignments.tariffid) WHERE `suspended`=0 AND (datefrom <= UNIX_TIMESTAMP() OR datefrom = 0) AND (dateto >= UNIX_TIMESTAMP() OR dateto = 0) GROUP BY assignments.customerid
I nie wiem teraz jak mam to złączyć z tabelą cash aby mi pokazywał tych z saldem zadłużenia ponad 100%.
uczestnicy (3)
-
Jan Łukasz Ciećko
-
Waldemar Dymkiewicz
-
Łukasz Rostalski