| Version 1 (modified by , 45 hours ago) ( diff ) |
|---|
Целосен преглед на трансакции
Опис
Овој поглед обезбедува целосен преглед на трансакциите, комбинирајќи податоци од повеќе табели во еден приказ
Погледот е наменет за:
- прикажување трансакции во кориснички интерфејс
- извештаи
- аналитички пребарувања
Табели опфатени со view-от
transactiontransaction_breakdowntransaction_accounttagtag_assigned_to_transaction
Тип
- READ-ONLY VIEW
SQL код
CREATE OR REPLACE VIEW vw_transaction_overview AS
SELECT
t.transaction_id,
t.transaction_name,
t.date,
t.net_amount,
ta.transaction_account_id,
ta.account_name,
STRING_AGG(DISTINCT tg.tag_name, ', ') AS tags
FROM transaction t
JOIN transaction_breakdown tb
ON tb.transaction_id = t.transaction_id
JOIN transaction_account ta
ON ta.transaction_account_id = tb.transaction_account_id
LEFT JOIN tag_assigned_to_transaction tat
ON tat.transaction_id = t.transaction_id
LEFT JOIN tag tg
ON tg.tag_id = tat.tag_id
GROUP BY
t.transaction_id,
t.transaction_name,
t.date,
t.net_amount,
ta.transaction_account_id,
ta.account_name;
Објаснување на логиката
- Се комбинираат основните податоци за трансакцијата
- Се прикажува сметката на која трансакцијата влијае
- Таговите се агрегираат во една текстуална колона со
STRING_AGG LEFT JOINсе користи за тагови бидејќи тие се опционални
Причина за користење
Овој поглед е неопходен бидејќи:
- ја централизира логиката за читање на трансакции
- ја намалува комплексноста во апликацијата
- обезбедува конзистентен формат за приказ на податоци
Без ваков поглед, секој извештај би морал повторно да ги имплементира истите JOIN-ови
Note:
See TracWiki
for help on using the wiki.
