2015-02-07 3 views
0

У меня есть данные о посещаемости для сотрудников, хранящихся в таблице attendance со следующими именами столбцов:Выберите данные отпуска из таблицы посещаемости учитывая следующее условие

  • emp_id (сотрудник ID)
  • Дата
  • типа (отпуск, отсутствует, и т.д.)

(есть и другие, но я опускаю их для простоты)

Моя цель состоит в том, чтобы получить все даты данного месяца, на котором работник находился в отпуске (тип = «Leave») и последний отпуск, полученный в прошлом месяце, если таковые имеются.

Это легко сделать с помощью двух запросов (я использую PHP для обработки данных), но можно ли это сделать в одном запросе?

+0

@ Isaiah Конечно, не спешите сюда. :-) Просто я не могу обернуться вокруг этой головы. – dotslash

+0

Я бы объединил два запроса с UNION – bpgergo

+0

@bpgergo Ah! Теперь это имеет смысл. Благодаря тонну! :) – dotslash

ответ

0
SELECT * FROM table_name 
WHERE type="Leave" AND 
date <= (CURRENT_DATE() - 30) 

Выберите поля, и т.д. Вы хотите, то с CURRENT_DATE() функцию комбинированного где положение Использования MySQL в. Я вычитал 30 в течение 30 дней в месяц.

Если дата является столбцом даты, это вернет всех, кто покинул 1 месяц или более назад.

Edit:

Если вы хотите конкретную дату, изменить второй месяц, как это:

date <= (date_number - 30) 
+0

Я думаю, вы меня неправильно поняли. «Оставить» здесь не означает, что человек покинул компанию; это когда человек взял выходной. :) – dotslash

+0

Ну, вы можете отредактировать условие, но это, вероятно, лучший способ сделать это –

0

Я отвечаю на свой вопрос так, чтобы закрыть его. Как отметил @bpgergo в комментариях, UNION будет делать трюк здесь.

Смежные вопросы