Вопросы по SQL и другие аспекты работы PostgreSQL

warning: Creating default object from empty value in /var/www/victor/web/pgdocs.ru/data/modules/taxonomy/taxonomy.pages.inc on line 33.
Здесь обсуждаются запросы на SQL в PostgreSQL. Оптимизация запросов, реализация, подходы и т.д.

Формирование истории из нескольких таблиц в PostgrSQL

Есть три таблицы (прилагаются):
- Таблица ObjectsHistory oh - история Объектов. У Объектов есть статусы. Бывает, что у Объекта нет статуса (не проставлен),
- Таблица PackagesHistory ph - история Пакетов. У Пакетов есть статусы. Бывает, что у Пакета нет статуса (не проставлен),
- Таблица ObjectToPackage op - связи объектов с пакетами. Объекты могут находиться в Пакетах, перемещаться между Пакетами, а также могут находиться вне Пакетов. В один момент времени Объект может быть только в одном Пакете либо вне Пакетов.

Запрос к таблице с перебором значений

Добрый день!
Есть таблица ObjectsHistory oh (прилагается).

Как сделать, чтобы из таблицы выбрать только те объекты, у которых в истории встречаются статусы ObjectStatus6, ObjectStatus7, ObjectStatus8 (каждый статус встречается как минимум 1 раз), причем хотя бы один из найденных статусов ObjectStatus8 по дате - позже, чем хотя бы один из найденных статусов ObjectStatus7 и хотя бы один из найденных статусов ObjectStatus7 по дате - позже, чем хотя бы один из найденных статусов ObjectStatus6.
Вывести ObjectsHistory oh полностью по выбранным объектам (лист Конечный результат).

Замена временных таблиц в PgrSQL для оптимизации

Добрый день!
Подскажите, пожалуйста, если кто-то сталкивался.
Пытаюсь заполнить и сделать upd ate из временной таблицы в PgrSQL.
Но из-за того что и сама temp строится путем выборки из нескольких таблиц с большим количеством данных, и таблицы t, f тоже состоят из сотен тысяч строк, медленно отрабатывает.

Как можно оптимизировать эту процедуру, чтобы она эффективно отрабатывала под нагрузкой? Может ли кто-то подсказать, как, например, встроить UPDATE по сегментам или есть какие-то еще более удачные решения?

-----------

CREATE OR REPLACE FUNCTION public.F() RETURNS void

AS $$

Как удалить связанные записи

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

 ....REFERENCES name_table
                ON DELETE cascade,
....

в данном случае не подходит.

Вот что пробовал

DELETE FROM user_role WHERE user_id = '19' AND DELETE FROM usr WHERE id = '19';

Такой вариант то же не работает.

user_role - таблица с внешним ключом типа bigint

Reboot системы

Возможно ли такое, что после ребута Дебиан прорал кластер базы? У меня видимо такое случилось

SQL Error [22023]: ERROR: timestamp with time zone units "data" not recognized

При выполнении SQl -скрипта
select
date_trunc('data', date1) as date1,
date_trunc('data', (date1 + interval '1 day')) as date2,

получаю сообщение о том что date1 записана с часовым поясом, поэтому к ней нельзя прибавить интервал времени,
в обшем, мне нужно разбить данные отчета по периода: месяца, года , дни, кварталы и записать в виде начало периода-конец периода, начало получаем в date1, а вот конец получить не удается

Поиск драйверов для PostgreSQL

Добрый день, форумчане. Краткая история:
Есть программа, сканер безопасности СУБД. Ей предоставляется ip сервера с СУБД, логин и пароль. После успешного подключения к СУБД сканер выполняет функции аудита, сканирует субд на наличие уязвимостей, проверяет сложность паролей других юзеров и т.д.
В документации сканера написано, что он работает с PostgreSQL(9.3-9.6 ver), но функция аудита доступна "При установке драйверов для подключения".

Как найти записи отличающиеся от предыдущих более чем на какое-то значение?

Есть таблица с температурами с 2017 года:

SELECT * FROM "outerTemp";
id	DateTime	        temp
1	2017-10-25T23:05:09.000	1.37
2	2017-10-25T23:15:13.000	1.25
3	2017-10-25T23:25:16.000	1.88
4	2017-10-25T23:35:19.000	1.75
5	2017-10-25T23:45:23.000	1.75
 
..................................................................
 
75894	2019-05-01T04:20:54.000	2.25
75895	2019-05-01T04:30:57.000	2.31
75896	2019-05-01T04:41:00.000	2.56

как создать запрос к ячейке

есть значение в столбца response:
{"success":true,"errorMessage":"","outputParameters":

Объединить в строке строки из связанных таблиц.

Добрый день.
Как создать SELECT из двух связанных таблиц:
Таблица1 - иерархическая структура (дерево) моделей оборудования (model):
modelid - счётчик
modelparentid - указатель на родителя
vendorid - указатель на производителя оборудования
modelname - наименование модели
Таблица 2 - список производителей оборудования
vendorid - счётчик
vendorshortname - наименование производителя.

Как вывести записи таким образом, что если в таблице model значение vendorid = null, то выводим просто modelname, а если нет - выводим строку vendorshortname + " " + modelname
?

Собранный материал

Back to top

(С) Виктор Вислобоков, 2008-2023