|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - выборка из одной столбца таблицы с несколькими условиями + count |
|
Прочие БД - выборка из одной столбца таблицы с несколькими условиями + count
|
Пользователь Сообщения: 51 |
Профиль | Отправить PM | Цитировать Добрый день.
Есть 2 таблицы (1. stend_monitoring 2.stand_status) в PSQL, примерно такого содержания: num_stend stamp_ name_event 1205 2020-12-16 10:05:08 Контейнер установлен 2205 2020-11-15 12:04:08 Контейнер изъят 1205 2020-10-14 13:07:08 Книга используется 2205 2020-12-16 10:05:08 Контейнер установлен 1205 2020-11-15 12:04:08 Контейнер изъят 2205 2020-10-14 13:07:08 Книга используется 1205 2020-12-16 10:05:08 Контейнер установлен 2205 2020-11-15 12:04:08 Контейнер изъят 1205 2020-10-14 13:07:08 Книга используется 2205 2020-12-16 10:05:08 Контейнер установлен 1205 2020-11-15 12:04:08 Контейнер изъят 2205 2020-10-14 13:07:08 Книга используется 1205 2020-12-16 10:05:08 Контейнер установлен 2205 2020-11-15 12:04:08 Контейнер изъят 1205 2020-10-14 13:07:08 Книга используется 2205 2020-12-16 10:05:08 Контейнер установлен 1205 2020-11-15 12:04:08 Контейнер изъят 2205 2020-10-14 13:07:08 Книга используется 1) показать num_stend 2) по num_stend показать последнюю дату когда был "Контейнер изъят". 3) по num_stend показать последнюю дату когда был "Контейнер установлен". 4) по num_stend показать последнюю дату "Книга используется" после даты последнего события "Контейнер установлен". 5) по num_stend показать последнюю дату "Книга используется" 6) из второй таблицы (stand_status) нужен просто текущий name_status. (в таблице name_status постоянно обновляется, нужно просто забирать этот status) 7) Посчитать общее кол-во строк "Книга используется" после последнего события "Контейнер установлен" Попытался сделать следующим образом: SELECT t1.num_stend as номер_стенда, t3.stamp_ as Контейнер изъят, t1.stamp_ as Контейнер установлен, t2.stamp_ as Книга используется, t4.name_event as Состояние FROM azt.stend_monitoring t1, azt.stend_monitoring t2, azt.stend_monitoring t3, azt.stand_status t4 where t1.num_stend = '2205' and t1.name_event = 'Контейнер установлен' and t2.num_stend = t1.num_stend and t2.name_event = 'Книга используется' and t2.stamp_ > t1.stamp_ and t3.num_stend = t1.num_stend and t3.name_event = 'Контейнер изъят' and t4.num_stend = t1.num_stend and t4.object_ = 1 order by t1.id desc, t2.id desc, t3.id desc LIMIT 1 Можете помочь с оптимизацией запроса? |
|
Отправлено: 11:35, 17-12-2020 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Немного изменил скрипт, стал отрабатывать за 200 мс. Остались не решенными 2 проблемы:
1) как добавить сюда общее число строк "Книга используется" после последнего события "Контейнер установлен" 2) Можно ли как то уменьшить необходимость кол-во ввода значения num_stend. select * from (Select MAX(num_stend) AS номер_стенда, MAX(stamp_) AS Контейнер изъят from azt.stend_monitoring where name_event = 'Контейнер изъят' and num_stend = '1205') T2, (Select MAX(stamp_) AS Контейнер установлен from azt.stend_monitoring where name_event = 'Контейнер установлен' and num_stend = '1205') T3, (Select MAX(stamp_) AS Последняя_транзакция from azt.stend_monitoring where name_event = 'Книга используется' and num_stend = '1205') T4, (Select name_event AS Состояние_стенда from azt.stand_status where object_ = 1 and num_stend = '1205') T5 |
Отправлено: 17:09, 18-12-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать правильнее было бы использовать явный LEFT JOIN
Цитата Armsinglom:
показать запрошенный num_stend а то, что вы делаете - это выбрать запрошенный num_stend впрочем, последующие показать демонстрируют, что составивший задание просто не "рубит в теме" |
|
Отправлено: 11:19, 19-12-2020 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - Копирование таблицы (2 столбца) из файла .htm в Excel | Serg2010 | Скриптовые языки администрирования Windows | 2 | 05-08-2015 22:18 | |
Выборка данных из таблицы mysql | vinbongun | Вебмастеру | 7 | 14-08-2013 06:23 | |
MySQL - Выборка данных из таблицы mysql | vinbongun | Программирование и базы данных | 0 | 11-08-2013 09:10 | |
MySQL - Выборка из таблицы | Sergey666 | Программирование и базы данных | 1 | 23-03-2010 06:19 | |
выборка случайной строки из таблицы на MySQL | Vlad Drakula | Вебмастеру | 5 | 19-10-2004 05:55 |
|