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

Выходные параметры в функциях постгрес. КАК ДОБИТЬСЯ РАБОТЫ

Создаю такую функцию:

CREATE OR REPLACE FUNCTION "public"."checkkart" (_numkart text, out skidka integer) AS
$body$
declare
colname record;
_discount integer;
begin
FOR colname IN SELECT * from discount where bar=_numkart
LOOP -- если запись найдена то присваем skidka=3
begin
select disc_perc into _discount from discount where bar=_numkart ;
skidka=3;
exit; --выход из цикла
end;
END LOOP;
if skidka>0 then exit; --если были найдены записи, то выходим.
else
skidka=0; --если не были найдены то skidka=0

Как создать запрос?

Имеется строка в БД в ячейке datetime вида: "2010-03-24 00:18:26". Каким образом можно создать запрос на выборку по дате (отдельно) и по времени?

Перевод функций с T-sql на PL\pgsql

Существует база данных на MSSQL ее нужно перевести в Postgres. С переводом таблиц не было проблем, а вот с фунциями возникли проблемы. Вот код функции на MSSQL:

ALTER FUNCTION [dbo].[SupplierDebt]
(
@SupplierID int
)
RETURNS float
AS
BEGIN
Declare @Sum float;
Select @Sum = sum([Sum]) FROM SuppliersDebt WHERE
SupplierID = @SupplierID
IF @Sum IS NULL RETURN 0;
RETURN @Sum;
END

а вот я примерно пытался написать на Postgres:
create or replace function SuppliersDebt(mSupplierID int) RETURNS FLOAT AS $$

DECLARE Summ float;
BEGIN
SELECT Summ = Sum(Sum)

Обновление схемы БД

Доброе время суток.
Возник вопрос по обновлению БД. Ситуация такова, что есть 2 дампа ДБ. Один из низ является развитем предыдущего. На основе старой схемы есть рабочая БД , как её можно привести к виду во втором дампе ?

Как оределить битые записи

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

Можете сказать как найти битые записи(в таблице 720000 записей)?
Даю запрос выдаёт

invalid memory alloc request size 42929667293 

Как поменять владельца SEQUENCE?

Использую PostgreSQL 8.3.6. Задача поменять владельцев SEQUENCE.
В документации на 8.4 написано
ALTER SEQUENCE name OWNER TO new_owner
Но на текущей версии это не прокатывает :(
Есть ли другой способ?

сбой id и oid

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

Добрый день.
Есть проблема. В таблицу загружаются данные. По не понятно причине, при загрузке id и oid сбились (записи битые). Вопрос такой
как узнать какая последняя запись была правильной? Есть поле дата, у битого id год даты="u2". Беру id-1 и oid-1, год даты="10" , хотя с 2010 годом загрузка не работала. Что делать?

Размер БД н уменьшается.

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

Извините за повтор, наверно уже было такое... но у меня чтото ниче не получается, и не пойму как вообще сделать...
удалил из БД blodы все. и еще кучу лишней инфы. размер как был 12 Гб так и остался...

как на рабочей БД убить все то что я дропнул уже??

Заранее спасибо!

Order By не поможет?

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

Цель такая...
Есть таблица с странами..

id name
1 RUS
2 JPN
3. MEX
4. USA
5. KZ
6. UKR

Мне надо вывести все эти страны с условием: 1) сначало идет USA, 2) Потом RUS 3) А потом все оставльное..

ПС. предлагать еще одно поле для сортировки не прокатывает. надо сделать в одном SQL запросе.

с UNION чтото не прокатывает(
"SELECT * FROM country WHERE id = {ID_EUROPE}
UNION
SELECT * FROM country WHERE id = {ID_USA}
UNION
SELECT * FROM country WHERE id = {ID_RUSSIA}
UNION
SELECT * FROM country WHERE id NOT IN ({ID_EUROPE}, {ID_USA}, {ID_RUSSIA}) ORDER BY `name` ASC;"

синтаксис FOREIGN KEY

всем привет. Подскажите народ пожалуйста как мне сделать FOREIGN KEY, так чтобы он ссылался на другие таблицы. В общем у меня есть таблица пользователи и ее как говарится должен участвовать еще как минимум в 2 таблицах, при этом он не должен меняться и удаляться. Все действия чтобы были допустимы только в главной таблице где он является PRIMARY KEY. Помогите пожалуйста. Раньше я работала с другой БД в которой если столбцу присваиваешь форен с сылкой на его основную таблицу то данные автоматически переносились в другую таблицу. просто не могу найти решения своего вопроса. Заранее благодарна.

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

Back to top

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