SELECT users.id AS id, SUM((type * 2 - 7) * value) AS balance FROM users LEFT JOIN cash ON users.id = cash.userid AND (cash.type = 3 OR cash.type = 4) AND users.status = 3 GROUP BY users.id ^^^^^^^^^^^^^^^^^^^^
Dla dociekliwych podaję zapytanie, o które chodziło na początku wątku, czyli zwracające dłużników (niestety zadziała pewnie tylko na postgresie):
^^^^^^^^^^
select name, lastname, ((select SUM(value) from cash t1 where type = 3 and t1.userid= t3.userid group by userid, type) - (select SUM(value) from cash t2 where type=4 and t2.userid = t3.userid group by userid, type)) as bilans from cash t3
W mysql trzebaby ten myk z tabelą tymczasową robić.
W związku z w/w łazi mi po głowie problem że zapytania z wersji na wersję są corazbardziej 'db-specyfic'. Rozwiązania różne mi się kołaczą, ale skor mamy własny międzymordź bazodanowy (łapkami Baseta zrobion') to zróbmy sobie np w tym międzymordziu jeszcze jeden poziom abstrakcji i 'wirtualną' tablelkę:
user_id saldo
Wystarczy nam user_id do powiązania z dowolnymi polami z users, np zmiana finansów czy sqla na np dbfy czy Oracle nie będzie powodować nam zmian w lmsLIB zostaje tylko skrypty perlowe popsuc, aby używały naszego 'perl-lmsdb' i taką tabelkę też miały.
komentz?
kd.
uczestnicy (1)
-
hunter