Я работаю над системой управления/вознаграждения сотрудников, и мне нужно иметь возможность отображать одну страницу «истории транзакций», которая показывает в хронологическом порядке различные события, с которыми столкнулся сотрудник, в одном списке. (Наподобие того, как в Facebook вы можете перейти в раздел истории/действий и увидеть хронологический список всех вещей, которые вы сделали и которые влияют на вас, даже если они не связаны друг с другом и вы просто являетесь обычным пользователем)
У меня есть разные таблицы для разных событий, каждая таблица имеет ключ employee_id и временную метку «происшедшего», некоторые примеры таблиц:
bonuses
customers
raise
complaints
feedback
Таким образом, всякий раз, когда происходит событие (т. е. новый клиент назначается сотруднику, или сотрудник получает жалобу или повышение), в соответствующую таблицу добавляется новая строка с идентификатором сотрудника, на который оно влияет, и отметкой времени, когда это произошло.
Мне нужен один запрос, чтобы извлечь все записи (например, до 50), которые включают сотрудника, и вернуть представление истории этого сотрудника. Имена полей в каждой таблице разные (например, бонус включает сумму с примечанием, клиент включает информацию о клиенте и т. д.).
Мне нужно, чтобы вывод был сводным представлением с использованием имен столбцов, таких как:
event_type = (new customer, bonus, feedback etc)
date
title (a brief worded title of the type of event, specified in sql based on the table its referencing)
description (verbiage about the action, such as if its event_type bonus display the bonus amount here, if its a complain show the first 50 characters of the complaint message or the ID of the user that filed the complaint from the complaints table. All done in SQL using if statements and building the value of this field output based on which table it comes from. Such as if its from the customers table IF current_table=customers description='A customer was assigned to you by'.customers.assigner_id).
Идеально,
Есть какой-либо способ сделать это?
Другой вариант, который я рассматривал, - это я мог бы выполнить 5-6 разных запросов, извлекая записи каждый из своей таблицы, а затем использовать команду mysql для «сшивания/перемежения» результатов всех запросов в один список в хронологическом порядке. Это тоже было бы приемлемо