Я работаю над системой управления сотрудниками/вознаграждением и должен иметь возможность показать одну страницу истории транзакций, которая показывает в хронологическом порядке различные события, которые имеет сотрудник опытный в одном списке. (Например, как в 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 для «mesh/interleave» результатов из всех запросов в один список по хронологическим заказ. Это было бы приемлемо также
Спасибо за предложение. Не могли бы вы объяснить, как вы можете написать одно из выражений? (Выберите любой образец условий). Его времена были с тех пор, как Ive использовал выражения таким образом и нарисовал пробел в синтаксисе (поиск теперь, но получение множества общих выражений WHERE, или если у вас есть ссылка на эту конкретную статью об использовании kb, которая тоже будет работать) –
Я дал пару примеров. – Tom