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

Вниз

Запрос списка уволенных   Найти похожие ветки 

 
worldmen   (2011-04-02 20:09) [0]

есть Таблица трудовой
ID - (ключ FK )
Date_IN - (дата приема на работу)
Date_out - (дата увольнения)

В таблице хранятся данные всей трудовой, поэтому на каждого человека приходится несколько записей даты приема и даты увольнения.
Если человек еще работает, то одна из записей Date_out для него равна Null, а если его уволили то все даты Date_out заполнены.
Вопрос: как нужно выбрать список только уволенных?

пробовал по максимальной дате Date_out, но сюда попадают и еще работающие.


 
Anatoly Podgoretsky ©   (2011-04-02 20:26) [1]

Это как "еще работающие", и при этом Date_out <> NULL
Смешно


 
sniknik ©   (2011-04-02 20:39) [2]

> Это как "еще работающие", и при этом Date_out <> NULL
старая запись c Date_out <> NULL, новая = NULL.
условие по только одной записи "кривое".

выбирать нужно по максимальной Date_IN с проверкой на <> NULL у Date_out.


 
!!!   (2011-04-02 20:54) [3]


Select B.ID
From
(Select ID, Count(ID) CountNull
From People
Where Date_Out is not null
Group By ID) A,
(Select ID, Count(ID) CountNotNull
From People
Group ID) B
Where B.ID = A.ID And B.CountNotNull = A.CountNull


 
worldmen   (2011-04-02 21:28) [4]

Интересное решение, но работает !!!!


 
sniknik ©   (2011-04-02 22:29) [5]

тогда уж попроще
Select DISTINCT ID From People
WHERE ID NOT IN (Select ID From People Where Date_Out is null)


 
clickmaker ©   (2011-04-03 00:30) [6]

а не проще признак ввести "уволен"?


 
worldmen   (2011-04-03 00:37) [7]

> а не проще признак ввести "уволен"?
Можно, но дата увольнения всеравно нужна.


 
Anatoly Podgoretsky ©   (2011-04-03 00:48) [8]

> clickmaker  (03.04.2011 00:30:06)  [6]

Излишество, дублирует дату уволнения.


 
sniknik ©   (2011-04-03 01:03) [9]

> но дата увольнения всеравно нужна.
какой в ней смысл? сделать признак (операция) с одной датой. идентификатор работника само собой оставить + добавить искусственный ключ операции, автоикремент (полезно для разных "адресных"/позаписьных ссылок в запросах)

признак может быть не только "уволен", а еще и принят/переведен/повышен/т.д. ("на вырост").


 
Кщд   (2011-04-04 07:10) [10]

>!!!   (02.04.11 20:54) [3]
"иногда лучше жевать" (с) :)

см. sniknik ©   (02.04.11 22:29) [5]
или

select j.id
from employee j
where not exists (
                      select null
                      from record p2
                      where p2.id = j.id
                               and p2.date_out is null
                      )

, где employee - таблица работников


 
!!!   (2011-04-04 10:05) [11]

Удалено модератором


 
Виталий Панасенко   (2011-04-04 12:44) [12]

select * from table1 t1 where not exists
(select t2.date_out from table1 t2 where t1.id=t2.id and t2.date_out is null)
не оно?
я так понимаю, ID _ это ИД работника?


 
Кщд   (2011-04-04 13:49) [13]

>Виталий Панасенко   (04.04.11 12:44) [12]
distinct, т.к. записей м.б. > 1


 
Виталий Панасенко   (2011-04-04 14:04) [14]

ну, это не суть.. впрочем, аналог

> sniknik ©   (02.04.11 22:29) [5]

только увидел :-)



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

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

Наверх




Память: 0.49 MB
Время: 0.006 c
3-1301760583
worldmen
2011-04-02 20:09
2014.12.14
Запрос списка уволенных


15-1400002027
Kerk
2014-05-13 21:27
2014.12.14
Вызов Free внутри класса


15-1400013003
Юрий
2014-05-14 00:30
2014.12.14
С днем рождения ! 14 мая 2014 среда


2-1385580807
SKIPtr
2013-11-27 23:33
2014.12.14
запись параметров в ini файл


15-1399721808
Дмитрий СС
2014-05-10 15:36
2014.12.14
Сделать из ноута bluetooth/usb клавиатуру.