| | 1 | = Целосен преглед на трансакции |
| | 2 | |
| | 3 | ==== Опис |
| | 4 | Овој поглед обезбедува целосен преглед на трансакциите, комбинирајќи податоци од повеќе табели во еден приказ |
| | 5 | |
| | 6 | Погледот е наменет за: |
| | 7 | - прикажување трансакции во кориснички интерфејс |
| | 8 | - извештаи |
| | 9 | - аналитички пребарувања |
| | 10 | |
| | 11 | ==== Табели опфатени со view-от |
| | 12 | - `transaction` |
| | 13 | - `transaction_breakdown` |
| | 14 | - `transaction_account` |
| | 15 | - `tag` |
| | 16 | - `tag_assigned_to_transaction` |
| | 17 | |
| | 18 | ==== Тип |
| | 19 | - **READ-ONLY VIEW |
| | 20 | |
| | 21 | ==== SQL код |
| | 22 | {{{#!sql |
| | 23 | CREATE OR REPLACE VIEW vw_transaction_overview AS |
| | 24 | SELECT |
| | 25 | t.transaction_id, |
| | 26 | t.transaction_name, |
| | 27 | t.date, |
| | 28 | t.net_amount, |
| | 29 | |
| | 30 | ta.transaction_account_id, |
| | 31 | ta.account_name, |
| | 32 | |
| | 33 | STRING_AGG(DISTINCT tg.tag_name, ', ') AS tags |
| | 34 | |
| | 35 | FROM transaction t |
| | 36 | JOIN transaction_breakdown tb |
| | 37 | ON tb.transaction_id = t.transaction_id |
| | 38 | JOIN transaction_account ta |
| | 39 | ON ta.transaction_account_id = tb.transaction_account_id |
| | 40 | LEFT JOIN tag_assigned_to_transaction tat |
| | 41 | ON tat.transaction_id = t.transaction_id |
| | 42 | LEFT JOIN tag tg |
| | 43 | ON tg.tag_id = tat.tag_id |
| | 44 | |
| | 45 | GROUP BY |
| | 46 | t.transaction_id, |
| | 47 | t.transaction_name, |
| | 48 | t.date, |
| | 49 | t.net_amount, |
| | 50 | ta.transaction_account_id, |
| | 51 | ta.account_name; |
| | 52 | }}} |
| | 53 | |
| | 54 | ==== Објаснување на логиката |
| | 55 | - Се комбинираат основните податоци за трансакцијата |
| | 56 | - Се прикажува сметката на која трансакцијата влијае |
| | 57 | - Таговите се агрегираат во една текстуална колона со `STRING_AGG` |
| | 58 | - `LEFT JOIN` се користи за тагови бидејќи тие се опционални |
| | 59 | |
| | 60 | ==== Причина за користење |
| | 61 | Овој поглед е неопходен бидејќи: |
| | 62 | - ја централизира логиката за читање на трансакции |
| | 63 | - ја намалува комплексноста во апликацијата |
| | 64 | - обезбедува конзистентен формат за приказ на податоци |
| | 65 | Без ваков поглед, секој извештај би морал повторно да ги имплементира истите `JOIN`-ови |