Вопросы по 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. Оптимизация запросов, реализация, подходы и т.д.

Как написать двойной SELECT - параметр из первого на вход второму?

Здравствуйте. Помогите пожалуйста разобраться с запросом.
Имеется две таблицы - city(id, name), country(id, name, city).
Нужно для каждой записи из таблицы city подсчитать ее количество в таблице country (то есть найти в таблице стран (country): сколько раз встречается каждый город(city)). При этом на выходе нужно получить таблицу городов: все параметры города (id, name) и его рейтинг (сколько раз он встретился в таблице country).

Исправить функцию

Добрый вечер! Помогите исправить это безобразие)

CREATE OR REPLACE FUNCTION updatebalance()
RETURNS void AS
$BODY$
DECLARE
rec1 RECORD;
rec2 RECORD;
rec3 RECORD;
rec4 RECORD;
rec5 RECORD;
rec6 RECORD;
rec7 RECORD;
rec8 RECORD;
rec9 RECORD;
BEGIN
FOR rec1 IN (SELECT n.vnumber, t.vname, noutfavoritecost, noutsystemcost, noutothercost, noutcityphonecost, noutinternationalcost, nsmscost, nmmscost, nwapcost FROM t_numbers n   -- t_numbers + t_tariff 
FULL JOIN t_contract c 
FULL JOIN t_tariff t ON c.ntariffid=t.id
ON c.id=n.ncontractid

Помогите найти ошибку

Доброго времени.
Помогите найти ошибку, вроде все правильно, а запрос не выполняется...

SELECT a1.idemandid,a1.vcnumber,f_ipeopleid_to_name_fb(a1.ipeopleid) AS fio,a1.dtstart,a1.dtend,
b1.dtmonth,b1.m_sum,
с1.dtstart,с1.u_sum
FROM demand a1,
	(SELECT b2.idemandid,b2.dtmonth,sum(b2.decsum) AS m_sum
	FROM demand a2,fixservlgot b2
	WHERE a2.istpdemid=29022 AND a2.idemandid=b2.idemandid
	GROUP BY b2.idemandid,b2.dtmonth
	) b1
LEFT OUTER JOIN 
	(SELECT b3.idemandid,b3.dtstart,sum(b3.decsum) AS u_sum
	FROM demand a3,debt b3

вывод нескольких колонок вместе

Подскажите как вывести несколько колонок в одной. Скажем в таблице отдельными колонками хранится фамилия, имя, отчество. А нужно чтобы при выводе это была одна колонка.

NoSQL

Всем привет. Пытаюсь использовать оператор @@.
SELECT '{"a": {"b": [1,2,3]}}'::jsonb @@ 'a.b.# = 2'; В ответ
ОШИБКА: оператор не существует: jsonb @@ unknown
LINE 1: SELECT '{"a": {"b": [1,2,3]}}'::jsonb @@ 'a.b.# = 2';
^
HINT: Оператор с данными именем и типами аргументов не найден. Возможно, вам следует добавить явные преобразования типов.
********** Ошибка **********

ОШИБКА: оператор не существует: jsonb @@ unknown
SQL-состояние: 42883

Как сделать запрос к двум таблицам БД из одного запроса

Есть таблица товаров TOVAR
Где есть два поля
ID
NAME

и таблица SOSTAV_ZAKAZA которая связывает заказы и товар, то есть перечисляется состав заказа
тоже два поля
ID_ZAKAZA
ID_TOVARA

Нужно за один запрос вывести все названия товаров которые записаны в поле NAME таблицы TOVAR

можно ли такое сделать за один запрос?

PS Это нужно для упрощения кода на php, как решить задачу двумя запросами я знаю
Select ID_TOVARA from SOSTAV_ZAKAZA where ID_ZAKAZA=1
Select NAME from TOVAR where ID=ID_TOVARA

PSS Сами таблицы я упростил чтоб было понятней

создание сложного CONSTRAINT

Доброе время суток!
Коллеги, помогите найти решение:
Есть таблица с полями:
date_begin: date
date_end: date
data1: str
data2: str
etc.

Задача в том, что бы создать такой CONSTRAINT, который не позволит создать новые строки данных либо поменять уже существующие таким образом, что бы пересекались периоды строк, заданные полями date_begin:date_end.

Как обновить в таблице координаты центроида измененного полигона

After a week of unsuccessful fighting I'm forced to ask for your help.

I have created a table 't_excavations' with fields 'id_excavation', 'geom' (MULTIPOLYGONE), 'longitude', 'latitude'

CREATE TABLE public.t_excavations ( id_excavation serial NOT NULL PRIMARY KEY, longitude numeric(9,6), latitude numeric(9,6), geom public.geometry ) WITH ( OIDS = FALSE );

Then I created a rule to autoupdate 'longitude' and 'latitude' columns to get XY of the polygone centroid that I add through QGIS

Не получается удалить запись с таблицы

Изображение punchik

Юзал чужую БД и натолкнулся на интересную ситуацию. Все SQL-запросы выполняются с результатом "успешно", но вот только при выполнении DELETE (правильно написанного по синтаксису простейшего SQL-запроса) "успешно" удаляется 0 строк с БД, а на самом деле запрос не удаляет ничего, хотя запись с указанным в условии идентификатором в таблице есть. Как такое может быть?

Битая запись в таблице?

Запрос, где id_reg varchar(30):

SELECT * FROM TABLE WHERE id_reg =
(SELECT id_reg FROM TABLE WHERE id_reg LIKE '% 09 03 20150905 02953 0063%')

возвращает пустой набор, хотя подзапрос возвращает одну запись.

В таблице больше 1000 записей с уникальным id_reg, и только вот с этим конкретным - проблема.
При каких условиях такое может быть?

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

Back to top

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