У меня две таблицы (MySQL) в моем приложении, связанные с заданиями отслеживания. Первая таблица «заданий» содержит одну строку для каждого задания, записанного в системе. Это поддерживается таблицей выполнения работ, которая отслеживает ход выполнения задания с добавлением новой строки каждый раз, когда работа переходит в новое состояние. Возможно также, что задание можно снова открыть и вернуть в прежнее состояние. Поэтому таблица job_progress может иметь несколько записей для одного и того же состояния задания, но в разные даты/времени.Запрос MYSQL для получения нескольких статусов из таблицы статусов
Я хотел бы получить текущее состояние задания, получив максимальную дату для определенного состояния через таблицу jobs_progress. Я также хотел бы иметь возможность получить для каждой работы дату, когда она проходила через каждое государство. Однако я изо всех сил стараюсь сделать это с помощью SQL и буду признателен за помощь. Смотрите следующий SQLFiddle: http://sqlfiddle.com/#!2/8b27f/4
Вот что я в настоящее время:
SELECT j.*
, jp.job_state
, jp.effective_date
, jp.user_id
FROM jobs j
LEFT
JOIN jobs_progress jp
ON jp.job_id = j.id;
+----+-----------+-------------+-----------+-----------------------+-----------+---------------+---------------+---------------------+---------+
| id | agency_id | entity_type | entity_id | job_title | job_state | system_status | job_state | effective_date | user_id |
+----+-----------+-------------+-----------+-----------------------+-----------+---------------+---------------+---------------------+---------+
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | NEW | 2014-07-08 12:27:54 | 102 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | APPROVED | 2014-07-08 12:28:02 | 102 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | ASSIGNED | 2014-07-08 12:29:02 | 102 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | WORK_COMPLETE | 2014-07-08 12:29:11 | 102 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | INVOICED | 2014-07-08 12:29:27 | 102 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | ASSIGNED | 2014-08-21 12:29:02 | 103 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | WORK_COMPLETE | 2014-08-30 12:29:11 | 103 |
| 1 | 123 | PROPERTY | 61 | set of keys to be cut | INVOICED | ACTIVE | INVOICED | 2014-09-01 12:29:27 | 103 |
+----+-----------+-------------+-----------+-----------------------+-----------+---------------+---------------+---------------------+---------+
Вот что я хочу:
+----+-----------+-----------------------+---------------------+--------------------------+--------------------------+--------------------------------+-------------------------+
| id | agency_id | job_title | raised_date (NEW) | approved_date (APPROVED) | assigned_date (ASSIGNED) | completed_date (WORK_COMPLETE) | invoiced_date (INVOICED)|
+----+-----------+-----------------------+---------------------+--------------------------+--------------------------+--------------------------------+-------------------------+
| 1 | 123 | set of keys to be cut | 2014-07-08 12:27:54 | 2014-07-08 12:28:02 | 2014-08-21 12:29:02 | 2014-08-30 12:29:11 | 2014-09-01 12:29:27 |
+----+-----------+-----------------------+---------------------+--------------------------+--------------------------+--------------------------------+-------------------------+
И вот что я пробовал:
SQL-Fiddle хорошо, но вы должны изменить свой вопрос, и включают в себя то, что результаты, которые вы хотите (вместе с данными выборки). –
, которые являются возможными состояниями? –
есть ли правильная последовательность, в которой только ваше состояние может быть изменено? –