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

непонятна логика работы GROUP BY

добрый день,!

Если есть примеры с множественным использованием данных и от 2-х и более таблиц, буду признателен.
никак не могу понять как работает group by в PG

Написал запрос:

SELECT
orders.order_id,
orders.shop_id,
orders.user_id,
orders.order_cost,
orders.retail_outlet_warehouse_token,
left(orders.retail_outlet_warehouse_token, 3),
j.name_eshop,
j.id_ax,
j.name_ax,
j.quantity,
j.category,
j.price,
orders.customer_email,
orders.customer_phone,
orders.customer_name,
orders.customer_surname,
date(orders.order_date),

Slony replication set

Настроенна репликация postgresql с помощью slony, нужно добавить таблицу что бы она реплицировалась, делаю вот по этой доке http://www.slony.info/documentation/1.2/addthings.html , я так понял что для каждой таблице надо создавать свой replication set, загвоздка в команде SLONIK CREATE SET там нужно указывать id а какой не понятно вдруг он уже существует, как вообще можно посмотреть существующие может есть какая-нибудь команда типо show set. Все это хозяйство досталось по наследству, в postgres не очень, заранее спасибо за помощь.

Вопрос по использованию PostGIS

Если два geom-а пересекаются, то как определять какая пересекающуюся часть и оставшуюся неперессеченную часть каждого из geom-ов ?

Задача с полем типа массив

Есть такая таблица:

CREATE TABLE "public"."test" (
"key1" int4 DEFAULT NEXTVAL('test_key1_seq'::regclass) NOT NULL,
"reach_pois" int4[]);

В ней следующие записи:
SELECT * FROM test LIMIT 10;

1	{110586}
2	{110586}
3	{110586}
4	{126493,126489,47886,47888,49456,49436,49438,49440,44489,44487,46145,46156,46160,46148,46160,46156,46145,44487,44489,49440,49438,49436,49456,47888,47886,126489,126493}
5	{}

Количество записей

Всем привет,
подскажите ответ на след вопрос

сделал функцию

-----

CREATE OR REPLACE FUNCTION dbo."pUserExit"(
"pUSERID" character varying DEFAULT ''::character varying)
RETURNS void AS
$BODY$

BEGIN

IF dbo."fnUserGetStatus"("pUSERID") NOT IN (2,3) THEN
DELETE FROM dbo."RoomSess"
WHERE "UserID"="pUSERID";
ELSE
UPDATE dbo."RoomSess" SET "isLock" = NULL
WHERE "UserID"="pUSERID";
END IF;
RETURN;

END

$BODY$
LANGUAGE plpgsql

-----

Подскажите как ее запустить чтоб возвращало количество измененных/удаленных строк

Как из функции вернуть Record

Привет
Нужно создать функцию на plpgsql что бы возвращала набор данных из связных таблиц в одной строке.
Пробовал создать функцию с типом возвращаемого значения record, но при вызове выдает только пустые значения.
Подскажите где лежат грабли?

Вот сама функция:
CREATE OR REPLACE FUNCTION Car_info(CarID integer) RETURNS record as $$
Declare

res record;
FDriverID integer;
SDriverID integer;

BEGIN

FDriverID = (Select "Driver1" From "Second_Task"."Crew" where "CrewID" = CarID);

Запрос на вывод таблицы

Весь РуНет облазил... Пожалуйста, можно хоть один пример как вывести таблицу со ВСЕМИ строками из PostgreSQL. Создал базу, но вывести данные не могу. Все что угодно обсуждается, а этого нигде нет. Кое как собрал такой код (ниже), к базе подключился, вижу на странице html показывается только название таблицы и все.

$dbconn = pg_connect("host=localhost port=5432 dbname=xxxx user=postgres password=xxxx");
$result = pg_query(" SELECT table_name table_row FROM information_schema.TABLES WHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema');");

Запрос и привилегии

Всем доброго времени суток.

Помогите новичку. Вот есть юзер, например test_user, и ему даны 2-е привилегии на базу:

CREATE USER test_user PASSWORD 'test_user';
GRANT CONNECT, CREATE ON DATABASE "TEST_DB" TO test_user;

И я хочу с помощью sql запроса узнать, есть ли для данного юзера привилегия CONNECT и CREATE на эту базу. Запрос, который бы выдавал что-то типа:

privelege  | has |
-------------------
CONNECT    | 1    |
--------------------
CREATE    | 1     | 

Как написать такой запрос?

Как должен выглядеть аналог из подхода в Oracle

В Oracle есть суперпользователь. Через него создаются новые пользователи с определенными ролями. Каждой роли определяются разрешения на select, insert, update, delete, execute на соответствующие объекты. Хотелось бы узнать как правильно это перенести в postgrsql. Просьба не пинать ногами - так как очень долго работал на oracle (c 6 версии), а postgres только поставил и немного посмотрел статьи по нему.

ОШИБКА: отношение "budget" не существует

Здравствуйте. Выполняю скрипт и не пойму, почему выводит эту ошибку:

 
DROP TABLE budget;
 
CREATE TABLE budget (
  entry_id bigint NOT NULL,
  financial_year character varying(4) NOT NULL,
  ....
  oktmo_code character varying(255),
  orfk_entry_id bigint,
  parent_id bigint,
  CONSTRAINT budget_pkey PRIMARY KEY (entry_id)
);
 
 
CREATE TABLE budget_to_budget_account (
  budget_entry_id bigint NOT NULL,
  budget_account_entry_id bigint NOT NULL,
  budget_account_type character varying(255),

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

Back to top

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