Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Базы данных > PostgreSQL
Перезагрузить страницу Параметрические запросы в Postgres
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
SectoR SectoR вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2005
По умолчанию 23.04.2007, 13:28

В общем есть такой запрос:
Код:
select count(Фамилия) as Количество_сотрудников from Сотрудники where Код_отдела=25;
Вопрос №1: реализованы ли в Postgre параметрические запросы?

Вот параметрический вариант предыдущего запроса, но только в Access:
Код:
select count(Фамилия) as Количество_сотрудников from Сотрудники where Код_отдела=[];
Вопрос №2: подскажите, как бы одним запросом подсчитать количество сотрудников в каждом отделе и вывести все это дело в одной таблице?

Т.е., что бы я не писал несколько раз:

Код:
select count(Фамилия) as Количество_сотрудников from Сотрудники where Код_отдела=23;
select count(Фамилия) as Количество_сотрудников from Сотрудники where Код_отдела=24;
select count(Фамилия) as Количество_сотрудников from Сотрудники where Код_отдела=25;
Ответить с цитированием
  (#2 (permalink)) Старый
SectoR SectoR вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2005
По умолчанию 23.04.2007, 19:38

Со вторым вопросом я разобрался! Первый - остается в силе?!
Ответить с цитированием
  (#3 (permalink)) Старый
vts vts вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.10.2008
По умолчанию 12.10.2008, 17:23

>>Со вторым вопросом я разобрался
Как?
Ничего кроме EXECUTE или генерации отдельного файла из подобных строк для исполнения в psql вроде не подходит
Мой собственный вопрос-
Create function xxx(emp) returns short_emp as '
select .....
'language sql

ни select xxx(row).*
ни select * from xxx(row)
не работает - мол -нет такого столбца "row"
однако типа select * from xxx() или xxx(текст) при другой функции работает вполне-тут какой-то глюк ?
Ну -или как с этой бедой бороться?
Тут конкретно 2 вопроса -почему rowtype не признается plpgsql-ом за набор столбцов
типа пиши row.x конкретно , а row.* -не катит, при declare row emp%rowtype
И почему select думает, что в xxx(row) row обязательно - столбец
Это как-то можно обойти?

Плюс для продвинутых SQL-щиков задачка
имеем в таблице t1 обход древа предков
level name
0 a
1 b
2 с
1 d
2 е
3 f
0 g
.....
Как это просто обратить в
parent child
a b
a d
b c
d e
e f
.........
хотя б на 1-2 уровня по древу ?
Ответить с цитированием
  (#4 (permalink)) Старый
SectoR SectoR вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2005
По умолчанию 10.04.2009, 19:23

Цитата:
Как?
Множеством различных способов, выбирай на вкус

Код:
select count(Таб_номер) as Количество_сотр from Сотрудники where
Код_отдела in (select Код_отдела from Отделы where Название_отдела='ВЦ')
UNION
select count(Таб_номер) as Количество_сотр from Сотрудники where
Код_отдела in (select Код_отдела from Отделы where Название_отдела='АСУ')
UNION
select count(Таб_номер) as Количество_сотр from Сотрудники where
Код_отдела in (select Код_отдела from Отделы where Название_отдела='Бухгалтерия');
Код:
select Код_отдела, count(Код_отдела) as Количество_сотрудников
from Сотрудники group by Код_отдела having Код_отдела=21
union
select Код_отдела, count(Код_отдела) as Количество_сотрудников
from Сотрудники group by Код_отдела having Код_отдела=24
union
select Код_отдела, count(Код_отдела) as Количество_сотрудников
from Сотрудники group by Код_отдела having Код_отдела=25;
Код:
select Код_отдела, count(Код_отдела) as Количество_сотрудников from Сотрудники
group by Код_отдела;
Код:
select Название_отдела, COUNT(*) as Количество_сотрудников
from Сотрудники inner join Отделы on Отделы.Код_отдела=Сотрудники.Код_отдела
GROUP BY Название_отдела;
Код:
select Отделы.Код_отдела, Отделы.Название_отдела, Отделы.Табельный_номер_начальника_отдела,
COUNT(*) as Количество_сотрудников
from Сотрудники inner join Отделы on Отделы.Код_отдела=Сотрудники.Код_отдела
GROUP BY Отделы.Название_отдела, Отделы.Код_отдела, Отделы.Табельный_номер_начальника_отдела;
Код:
select Отделы.Код_отдела, Отделы.Название_отдела, Отделы.Табельный_номер_начальника_отдела,
COUNT(*) as Количество_сотрудников
from Сотрудники, Отделы where Отделы.Код_отдела=Сотрудники.Код_отдела
GROUP BY Отделы.Название_отдела, Отделы.Код_отдела, Отделы.Табельный_номер_начальника_отдела;

Исходники таблиц:

Код:
create database lab1

create table Сотрудники
(
Таб_номер int not null,
Дата_рожд date not null,
Фамилия text not null,
Оклад int not null default 200,
Код_отд int not null,
Отработано_дней int not null default 0,
Премия int not null default 0,
Пол char(1) not null default 'м'
);

alter table Сотрудники add constraint table_pk primary key (Таб_номер);

alter table Сотрудники add constraint limit_amount check (Оклад>=200 and Оклад<=1000);

alter table Сотрудники add constraint limit_amount2 check (Премия>=0 and Премия<=600);

alter table Сотрудники add constraint limit_amount3 check (Отработано_дней>=0);

alter table Сотрудники add constraint limit_amount4 check (Пол='м' or Пол='ж');

create table Отделы
(
Код_отдела int not null,
Название_отдела text not null default 'неизвестно',
Количество_сотрудников int not null default 0,
Таьельный_номер_начальника_отдела int not null
);

alter table Отделы add constraint table_pk2 primary key (Код_отдела);

alter table Сотрудники add constraint table_fk foreign key (Код_отдела) references Отделы (Код_отдела);
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничения postgres ssh PostgreSQL 2 13.10.2008 00:13
запросы на prolog weirdo Prolog 6 17.09.2008 23:50
SQL запросы в цикле AlexP C++ Builder 12 07.09.2008 11:28
Какой пароль у пользователя postgres по умолчанию [GANQ] QWERTY PostgreSQL 3 14.12.2006 20:16
Как из builder работа с полем abstime Postgres Rider C++ Builder 0 12.09.2006 17:42
Запись в таблицу POSTGRES из Builder Rider PostgreSQL 1 17.08.2006 19:41
Postgres ODBC builder C6 как это все вместе Rider PostgreSQL 4 20.04.2006 21:42
Параметрические запросы и подготовка Dian MSSQL Server 0 02.08.2005 17:37
Вложенные запросы jenyok SQL 3 27.05.2005 04:10
Надо ли прописывать BDE postgres Northwood C++ Builder 0 26.03.2005 13:57
Запросы! russel-shf PHP 6 27.01.2005 10:06
Куда подевался postgres.ru Danger Dancer PostgreSQL 1 11.02.2003 11:29



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов