Полезные запросы
SYSDBA (обсуждение | вклад) (→Справочник клиентов) |
SYSDBA (обсуждение | вклад) (→Табліцы БД) |
||
| Строка 102: | Строка 102: | ||
where rdb$relation_name like '%INV%' | where rdb$relation_name like '%INV%' | ||
| + | === Палі табліц === | ||
RDB$RELATION_FIELDS (палі) | RDB$RELATION_FIELDS (палі) | ||
| Строка 134: | Строка 135: | ||
from rdb$relation_fields r | from rdb$relation_fields r | ||
where r.rdb$field_name = 'LB' | where r.rdb$field_name = 'LB' | ||
| + | |||
| + | === Дамены === | ||
RDB$FIELDS (дамены) | RDB$FIELDS (дамены) | ||
| Строка 150: | Строка 153: | ||
where d.rdb$null_flag = 1 | where d.rdb$null_flag = 1 | ||
| + | === Абмежавальнікі === | ||
RDB$RELATION_CONSTRAINTS (абмежавальнікі: першасныя і вонкавыя ключы, NOT NULL, інш.) | RDB$RELATION_CONSTRAINTS (абмежавальнікі: першасныя і вонкавыя ключы, NOT NULL, інш.) | ||
| Строка 157: | Строка 161: | ||
select * | select * | ||
from rdb$relation_constraints | from rdb$relation_constraints | ||
| + | |||
| + | === Індэксы === | ||
RDB$INDICES (індэксы) | RDB$INDICES (індэксы) | ||
| Строка 197: | Строка 203: | ||
on i.rdb$index_name = s.rdb$index_name | on i.rdb$index_name = s.rdb$index_name | ||
and i.rdb$foreign_key = 'GD_PK_DOCUMENT' | and i.rdb$foreign_key = 'GD_PK_DOCUMENT' | ||
| + | |||
| + | === Залежнасьці === | ||
RDB$DEPENDENCIES (залежнасьці паміж табліцамі) | RDB$DEPENDENCIES (залежнасьці паміж табліцамі) | ||
Версия 15:20, 30 августа 2007
Ниже приводится список полезных запросов.
Содержание |
Документы
Среднее количество позиций по документу с позициями в базе данных:
select (select count (*) from gd_document where not parent is null) / (select count (distinct parent) from gd_document where not parent is null) from rdb$database
Сообщения
Распределение количества обращений клиентов по месяцам:
select
extract(year from m.msgstartdate),
extract(month from m.msgstartdate),
count(m.subject)
from
msg_message m join gd_contact c
on c.id = m.fromcontactkey
where
/* добавьте сюда условие для отбора по */
/* конкретному клиенту или группе клиентов */
UPPER(c.name) LIKE '%'
group by
1, 2
order by
1 desc, 2 desc
Количество обращений по клиенту за заданный промежуток времени:
select
c.name,
count(c.name)
from
gd_contact c join msg_message m
on c.id = m.fromcontactkey
where
/* укажите здесь период и условия отбора клиентов */
m.msgstartdate between '01.06.2006' and '30.11.2006'
and UPPER(c.name) LIKE 'ИП%'
group by
c.name
order by
2 desc
Справочник клиентов
Запрос извлекает контакты, наименования которых начинаются с одинаковой последовательности символов. Длину последовательности можно регулировать.
select
c.id, c2.id, c.name, c2.name
from
gd_contact c join gd_contact c2
on SUBSTRING(UPPER(c.name) FROM 1 FOR 9) = SUBSTRING(UPPER(c2.name) FROM 1 FOR 9)
and c.id <> c2.id
where
/* задайте здесь условие, для того, чтобы вести поиск не по всем контактам */
UPPER(c.name) LIKE 'ИП%'
Запросы к системным таблицам
Табліцы БД
RDB$RELATIONS (табліцы)
Выбраць назвы ўсіх табліц БД (яны захоўваюцца ў табліцы RDB$RELATIONS)
select * from rdb$relations
Падлічыць колькасьць табліц у БД
select count(*) from rdb$relations
Выбраць толькі табліцы структуры БД (з прэфіксам RDB)
select * from rdb$relations where rdb$relation_name like '%RDB%'
Падлічыць колькасьць табліц структуры БД
select count(*) from rdb$relations where rdb$relation_name like '%RDB%'
Выбраць толькі табліцы БД, зьвязаныя са складам (з прэфіксам INV)
select * from rdb$relations where rdb$relation_name like '%INV%'
Палі табліц
RDB$RELATION_FIELDS (палі)
Выбраць усе назвы палёў усіх табліц БД (яны захоўваюцца ў табліцы RDB$RELATION_FIELDS)
select * from rdb$relation_fields
Падлічыць колькі палёў уваходзіць у кожную табліцу (групаваць па полю імені табліцы)
select rdb$relation_name, count(rdb$field_name) as kolk_palej from rdb$relation_fields group by rdb$relation_name
Выбраць назвы палёў, якія ўваходзяць у табліцу GD_CONTACT
select f.* from rdb$relation_fields f join rdb$relations r on r.rdb$relation_name = f.rdb$relation_name where r.rdb$relation_name = 'GD_CONTACT'
альбо
select * from rdb$relation_fields where rdb$relation_name = 'GD_CONTACT'
Выбраць назвы табліц, якія маюць дрэвавідную структуру
select r.rdb$relation_name from rdb$relation_fields r where r.rdb$field_name = 'LB'
Дамены
RDB$FIELDS (дамены)
Выбраць усе дамены БД (яны захоўваюцца ў табліцы RDB$FIELDS)
select * from rdb$fields
Выбраць імёны палёў, якія маюць тып (дамен) ня NULL
select f.rdb$field_name, f.rdb$relation_name
from rdb$relation_fields f
join rdb$fields d
on d.rdb$field_name = f.rdb$field_source
where d.rdb$null_flag = 1
Абмежавальнікі
RDB$RELATION_CONSTRAINTS (абмежавальнікі: першасныя і вонкавыя ключы, NOT NULL, інш.)
Выбраць усе абмежавальнікі ўсіх табліц БД
select * from rdb$relation_constraints
Індэксы
RDB$INDICES (індэксы)
Выбраць усе індэксы ўсіх табліц БД
select * from rdb$indices
Выбраць усе табліцы, якія спасылаюцца на табліцу GD_DOCUMENT
select rdb$relation_name from rdb$indices where rdb$foreign_key = 'GD_PK_DOCUMENT'
Выбраць усе табліцы, якія спасылаюцца на табліцу GD_DOCUMENT, выключаючы дубліруючыя запісы
select distinct rdb$relation_name from rdb$indices where rdb$foreign_key = 'GD_PK_DOCUMENT'
RDB$INDEX_SEGMENTS (складнікі індэксаў, зь якіх палёў складаюцца індэксы)
Выбраць складнікі (палі) ўсіх індэксаў
select * from rdb$index_segments
select i.rdb$relation_name, s.rdb$field_name
from rdb$indices i
join rdb$index_segments s
on i.rdb$index_name = s.rdb$index_name
Палі табліц, якія зьвязаныя з табліцай GD_DOCUMENT
select i.rdb$relation_name, s.rdb$field_name
from rdb$indices i
join rdb$index_segments s
on i.rdb$index_name = s.rdb$index_name
and i.rdb$foreign_key = 'GD_PK_DOCUMENT'
Залежнасьці
RDB$DEPENDENCIES (залежнасьці паміж табліцамі)
Выбраць усе залежнасьці паміж табліцамі БД
select * from rdb$dependencies
Выбраць усе дамены Гедыміна
select * from AT_FIELDS