Három view-ból egy selectet.
Üdv,
Kalapáltam három view-t:
create or replace view group_pay as select tid,sum(amount) as amount from payments group by tid;
create or replace view group_inc as select tid,sum(amount) as amount from incomes group by tid;
create or replace view balance_per_tenants
as
select group_pay.tid,
tenants.name,
group_inc.amount - group_pay.amount as balance
from group_pay,group_inc,tenants
where group_inc.tid=group_pay.tid
and
tenants.id=group_pay.tid;
Magyarázat: van három tábla, a tenants, payments, incomes. A tenatns a bérlők listája, a payments, incomes a fizetendő illetve befizetett összegek listája, azonosító, befizetőazonosító, dátum és összeg szerepel. Arra vagyok kíváncsi, hogy az egyes bérlők befizették-e a megfelelő összegeket. A fenti három view ezt megoldja, a select * from balance_per_tenants;
marha gyorsan le is fut, ám lehet hogy jobb lenne:
- nem az sql-ben tárolni az üzleti logikát (vagy mit)
- egy selectben megoldani az egészet.
A második érdekel elsősorban, bár a filozófiai kérdés (üzleti logika sql-ben) is, de az csak haloványan. Igazság szerint csináltam egy join-os selectet, de az kb. 1,5 percig futott és rossz eredményt adott vissza :D
Update: mysql az alany.
- Tovább (Három view-ból egy selectet.)
- 8675 megtekintés