![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - выборка из одной столбца таблицы с несколькими условиями + count |
|
Прочие БД - выборка из одной столбца таблицы с несколькими условиями + count
|
Пользователь Сообщения: 51 |
Добрый день.
Есть 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 |
|