Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2014.12.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1400163635
RDen
2014-05-15 18:20
2014.12.14
firefox при запуске открывает http://trafmarket.ru/install


3-1301462832
vlgrig1961
2011-03-30 09:27
2014.12.14
HELP!!!Странная сортировка при GROUP BY


15-1399904738
Астахов Сергей
2014-05-12 18:25
2014.12.14
Экспорт данных в OpenOffice


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


15-1397669855
Rouse_
2014-04-16 21:37
2014.12.14
Задачка для разминки мозга





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский