Таблица Persons и "профессия"
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный гость
- Сообщения: 51
- Зарегистрирован: 03 ноя 2006, 16:44
- Откуда: Ukraine
- Контактная информация:
Таблица Persons и "профессия"
Подскажите, плз, как выбрать запросом табельные номера сотрудников по номеру и названию профессии.
Например, выбрать всех "Токарей", код профессии 8211.2
В таблице Persons есть ссылка на профессию, а дальше я никак не могу разобраться.
Please help
Например, выбрать всех "Токарей", код профессии 8211.2
В таблице Persons есть ссылка на профессию, а дальше я никак не могу разобраться.
Please help
"Все проходит и это пройдет - Omnia transeunt et id qouque/etiam transeat"
-
- Постоянный гость
- Сообщения: 51
- Зарегистрирован: 03 ноя 2006, 16:44
- Откуда: Ukraine
- Контактная информация:
Разобралась, наконец-то!
В таблице Appointments есть поле POST (профессия), но это ссылка, но только не указано на какую таблицу.
А вот используя поле-ссылку CBASEPROF из таблицы PERSON, можно в перейти в таблицу CATALOGS, где как раз и находятся профессии (должности) с кодами и т.п.
В таблице Appointments есть поле POST (профессия), но это ссылка, но только не указано на какую таблицу.
А вот используя поле-ссылку CBASEPROF из таблицы PERSON, можно в перейти в таблицу CATALOGS, где как раз и находятся профессии (должности) с кодами и т.п.
"Все проходит и это пройдет - Omnia transeunt et id qouque/etiam transeat"
-
- Постоянный гость
- Сообщения: 51
- Зарегистрирован: 03 ноя 2006, 16:44
- Откуда: Ukraine
- Контактная информация:
А что за функция COMP(x) и что означает (noindex)k_vit писал(а):select
CATALOGS.NAME,
PERSONS.FIO
from
CATALOGS,
persons
where
((
COMP(x) == CATALOGS.NREC AND
CATALOGS.NREC == APPOINTMENTS.POST(NOINDEX) AND
APPOINTMENTS.NREC /== PERSONS.APPOINTCUR(noindex)
));
"Все проходит и это пройдет - Omnia transeunt et id qouque/etiam transeat"
-
- Постоянный обитатель
- Сообщения: 143
- Зарегистрирован: 09 авг 2006, 16:40
- Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"
COMP(x)
COMP - функция преобразования любого типа к типу Comp
x - nRec должности, впринципе можно использовать и код должности, но вряд ли в таблице будет такой индекс.
NOINDEX - привязка без индекса, так как в таблице Appointments
нет такого индекса (с полем POST), а втаблице PERSONS нет индеска с полем APPOINTCUR.
COMP - функция преобразования любого типа к типу Comp
x - nRec должности, впринципе можно использовать и код должности, но вряд ли в таблице будет такой индекс.
NOINDEX - привязка без индекса, так как в таблице Appointments
нет такого индекса (с полем POST), а втаблице PERSONS нет индеска с полем APPOINTCUR.
COMP(x) - преобразование типов.
соответственно x - переменная.
(noindex)
В двойных скобках (( ... )) обычно указываются подцепки с учетом индексов, но если по некоторому полю нет индекса, то можно указать и так.
или так
-----------------------------
select
CATALOGS.NAME,
PERSONS.FIO
from
CATALOGS,
persons
where
((
COMP(x) == CATALOGS.NREC AND
(
CATALOGS.NREC = APPOINTMENTS.POST AND
APPOINTMENTS.NREC = PERSONS.APPOINTCUR
)
));
---------------------------------------------------
А вот так ограничение будет учитываться на всю вьюху
---------------------------------------------------
select
CATALOGS.NAME,
PERSONS.FIO
from
CATALOGS,
persons
where
((
COMP(x) == CATALOGS.NREC
))
And
(
CATALOGS.NREC = APPOINTMENTS.POST AND
APPOINTMENTS.NREC = PERSONS.APPOINTCUR
)
;
И вообще безиндексные запросы на больших БД будут тормозить.
И лучше правильно построить запрос.
соответственно x - переменная.
(noindex)
В двойных скобках (( ... )) обычно указываются подцепки с учетом индексов, но если по некоторому полю нет индекса, то можно указать и так.
или так
-----------------------------
select
CATALOGS.NAME,
PERSONS.FIO
from
CATALOGS,
persons
where
((
COMP(x) == CATALOGS.NREC AND
(
CATALOGS.NREC = APPOINTMENTS.POST AND
APPOINTMENTS.NREC = PERSONS.APPOINTCUR
)
));
---------------------------------------------------
А вот так ограничение будет учитываться на всю вьюху
---------------------------------------------------
select
CATALOGS.NAME,
PERSONS.FIO
from
CATALOGS,
persons
where
((
COMP(x) == CATALOGS.NREC
))
And
(
CATALOGS.NREC = APPOINTMENTS.POST AND
APPOINTMENTS.NREC = PERSONS.APPOINTCUR
)
;
И вообще безиндексные запросы на больших БД будут тормозить.
И лучше правильно построить запрос.
-
- Постоянный гость
- Сообщения: 51
- Зарегистрирован: 03 ноя 2006, 16:44
- Откуда: Ukraine
- Контактная информация:
Делаю запрос
select persons.tabnmb,persons.fio,persons.galdep,catalogs.code,catalogs.name
from persons,catalogs,katpodr
where ((CATALOGS.NREC /== APPOINTMENTS.POST(NOINDEX) AND APPOINTMENTS.NREC /== PERSONS.APPOINTCUR(noindex))) and catalogs.name='Слесарь-ремонтник'
order by persons.tabnmb;
Получаю: вывелись сведения для 3-х сотрудников, у одного табельный номер 0. Но при этом каждая запись продублирована раз по 10
Через модуль "Управление персоналом", иерархические отчеты по картотеке формирую отчет, где выводятся сотрудники с данной должностью.
В результате получаю 3 человека, причем в этом списке есть сотрудник, который уже уволен.
Как-то получается неочень, потому что я хочу на основе этого запроса еще получить более расширенную информацию по сотрудникам (начисленную зп, фактически отработанное время).
select persons.tabnmb,persons.fio,persons.galdep,catalogs.code,catalogs.name
from persons,catalogs,katpodr
where ((CATALOGS.NREC /== APPOINTMENTS.POST(NOINDEX) AND APPOINTMENTS.NREC /== PERSONS.APPOINTCUR(noindex))) and catalogs.name='Слесарь-ремонтник'
order by persons.tabnmb;
Получаю: вывелись сведения для 3-х сотрудников, у одного табельный номер 0. Но при этом каждая запись продублирована раз по 10
Через модуль "Управление персоналом", иерархические отчеты по картотеке формирую отчет, где выводятся сотрудники с данной должностью.
В результате получаю 3 человека, причем в этом списке есть сотрудник, который уже уволен.
Как-то получается неочень, потому что я хочу на основе этого запроса еще получить более расширенную информацию по сотрудникам (начисленную зп, фактически отработанное время).
"Все проходит и это пройдет - Omnia transeunt et id qouque/etiam transeat"