![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Никак не могу составить SQL запрос, помогите пожалуйста. [D6, Paradox]
al11 © (2003-05-19 17:21:00)Есть две звязанные таблицы:
Человек (Поля: НомерЗаписи, ФИО),
Приказ (Поля: НомерЗаписи, ВидПриказа, ДатаПриказа, Дата, НомерЗаписиЧеловек),
Если ВидПриказа=1 то Приказ о приеме, а Дата-дата приема
Если Вид приказа=2 то Приказ об увольнении, а Дата - дата увольнения
Связаны таблицы по полям ( одинЧеловек ко многимПриказам):
Человек.НомерЗаписи=Приказ.НомерЗаписиЧеловек
Нужно произвести такую выборку:
Подсчитать общее количество Человек (записей таблицы Человек) работающих на дату XX.XX.XXXX.
(т. е. принятых на работу (человек м.б. и несколько раз принят на работу) до указ срока и
не уволеных до него (так же несколько раз м. б. уволен) ).
Johnmen (2003-05-19 18:15:00) [1]Примерно так :
SELECT COUNT(*) FROM <Человеки> A
JOIN ON <Приказы> B ON B.<НомерЗаписиЧеловек>=A.<НомерЗаписи>
WHERE 1=(SELECT C.<вид приказа> FROM <Приказы> C
WHERE (A.<НомерЗаписи>=C.<НомерЗаписиЧеловек>) AND
(C.<ДатаПриказа>=(SELECT MAX(D.<ДатаПриказа>)
FROM <Приказы> D
WHERE D.<ДатаПриказа><="XX.XX.XXXX")))
Mike Kouzmine (2003-05-19 17:57:00) [2]Тебе надо связать эту таблицу по НомерЗаписиЧеловек саму с собой, и выбрать только те записи, где Дата в 1 больше, чкм дата в 2 (ВидПриказа)
Al11 (2003-05-19 17:55:00) [3]
Al11 (2003-05-19 17:22:00) [4]