Kossmmooss
@Kossmmooss

Как составить запрос MySql?

9ff06a599bd4430b908454e6f80457c5.png
Доброго времени суток!
Очень нужна помощь

есть табличка вида
Номер тиккета| № 1 - тип| новая заметка - время создания |18.00
Номер тиккета| № 1 - тип| закрыть - время создания |19.00

Немного коряво, но надеюсь понятно. Из этой таблички вывести ,чтобы вычитались из типа закрыть по номеру тиккета время создания и получалось

Номер тиккета| № 1 - промежуточное время |1.00

***имя таблицы ticket_history
В history_type как раз прописано свойство заметки . 15 - новая заметка, 2 - новая заявка

типы данных 918dddc185cb41329963f0f8b9654d10.pngab1dfe77a8894e6caaa5c7c0a105b499.png
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
как-то так:

SELECT t1.name, UNIX_TIMESTAMP(t1.create_time) - UNIX_TIMESTAMP(t2.create_time) as second -- время между событиями в секундах
FROM ticket_history  t1
INNER JOIN ticket_history t2 ON t2.ticket_id = t1.ticket_id AND t2.hystory_type_id=2 -- открытие тикета
WHERE t1.hystory_type_id=15  -- закрытые тикеты
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dredd_krd
Мне кажется, дизайн не совсем верный. Если это логи - это одно, а если рабочая таблица с тикетами - то лучше время создания и время закрытия указать соседними полями, и просто отнимать в селекте, получая это промежуточное время. Это в разы проще и правильнее.
А так, в качестве велсипеда можно подзапросом выбрать сначала время открытия тикета, потом время закрытия, и отнять.
Если увижу реальный select тикета с полями и данными, могу составить
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
select ticket_id, UNIX_TIMESTAMP(datetime) - UNIX_TIMESTAMP(datetime) as diff_seconds from tablename join (
select ticket_id, datetime from tablename where /* тип=закрыть */
) tclose USING(ticket_id)
WHERE /* тип=новая заметка */

?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы