Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Никак не могу составить SQL запрос, помогите пожалуйста.   Найти похожие ветки 

 
al11 ©   (2003-05-19 17:21) [0]

Есть две звязанные таблицы:
Человек (Поля: НомерЗаписи, ФИО),
Приказ (Поля: НомерЗаписи, ВидПриказа, ДатаПриказа, Дата, НомерЗаписиЧеловек),
Если ВидПриказа=1 то Приказ о приеме, а Дата-дата приема
Если Вид приказа=2 то Приказ об увольнении, а Дата - дата увольнения
Связаны таблицы по полям ( один Человек ко многим Приказам):
Человек.НомерЗаписи=Приказ.НомерЗаписиЧеловек

Нужно произвести такую выборку:
Подсчитать общее количество Человек (записей таблицы Человек) работающих на дату XX.XX.XXXX.
(т. е. принятых на работу (человек м.б. и несколько раз принят на работу) до указ срока и
не уволеных до него (так же несколько раз м. б. уволен) ).


 
Al11 ©   (2003-05-19 17:22) [1]



 
Al11 ©   (2003-05-19 17:55) [2]



 
Mike Kouzmine ©   (2003-05-19 17:57) [3]

Тебе надо связать эту таблицу по НомерЗаписиЧеловек саму с собой, и выбрать только те записи, где Дата в 1 больше, чкм дата в 2 (ВидПриказа)


 
Johnmen ©   (2003-05-19 18:15) [4]

Примерно так :

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")))



Страницы: 1 вся ветка

Текущий архив: 2003.06.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
3-26407
novill
2003-05-21 15:46
2003.06.09
Подскажите, как в runtime создать индекс для таблицы paradox?


1-26457
wera
2003-05-29 12:13
2003.06.09
ListBox


14-26661
inc-viz
2003-05-24 11:32
2003.06.09
Где брать дистрибутив bde и ADO для программы


3-26412
prihod
2003-05-21 18:39
2003.06.09
Команды компонента Query.Sql


1-26436
Eugie
2003-05-29 05:41
2003.06.09
Работа с OleSrver в потоке (TThread)