= Целосен преглед на трансакции ==== Опис Овој поглед обезбедува целосен преглед на трансакциите, комбинирајќи податоци од повеќе табели во еден приказ Погледот е наменет за: - прикажување трансакции во кориснички интерфејс - извештаи - аналитички пребарувања ==== Табели опфатени со погледот - `transaction` - `transaction_breakdown` - `transaction_account` - `tag` - `tag_assigned_to_transaction` ==== Тип - **READ-ONLY VIEW ==== SQL код {{{#!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`-ови