1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Выборка несуществующих записей из таблицы

Тема в разделе "Базы данных и администрирование", создана пользователем Jas, 9 июн 2006.

Статус темы:
Закрыта.
  1. Jas

    Jas Гость

    Репутация:
    0
    Вот какая тема.... Есть две таблицы, в первой содержаться код карты работника и ФИО. Во второй содержеться ряд событий. Систематакая когда человек проходит он карточку проносит перед сканером, сканер считывает код карты, время, дату и событие двери (вход или выход). Все эти события заносятся во вторую таблицу. Задача такая вычислить кто не пришел на работу допустим за неделю. Я чтото смутно представляю как это сделать. Пробовал через обычный запрос, но ничего не получается так как если работнк не приходил то и событий не было. Может у кого появиться мысль, помогите пожалуйста.
     
  2. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ну так в чём проблема .. если в лоб ... делайте запрос из первой таблицы а в условие подзапрос ко второй таблице с налаганием условий на дату и т.д. и потом проверка подзапроса на количестве записей в нём равном 0.

    Что-то а ля такого:

    Код:
    SELECT * FROM Persons P WHERE (SELECT COUNT(*) FROM Times T WHERE T.P_ID = P.P_ID AND Ваши доп условия по датам и т.д) = 0
    Связка таблицы по ключу и условие по дате ... вариант не самый быстрый но работаеть будет...
     
  3. Jas

    Jas Гость

    Репутация:
    0
    Чтото у меня ниче не полчуается по тому алгоритму который Вы посоветовали. может можно выложить куда нибудь БД. А Вы тогда посмотрите, что я там не так делал. Или может я что не так объсянил. Но пока ниче не работает. Помогите пожалуйста.
     
  4. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ну выложите структуры таблиц .. странно что не работает ...
     
  5. Jas

    Jas Гость

    Репутация:
    0
    1 таблица
    iSlotNumber числовой (код работника)
    tEmpName текстовый (ФИО работника)

    2 таблица
    dEvent_Date Дата/время
    dEvent_Time Дата/время
    tEvent_Emp_Code_Num числовой (код работника)
    tEvent_Type_Desc текст (событие двери (Вход или выход))
     
  6. Barmutik

    Barmutik Гость

    Репутация:
    0
    Код:
    SELECT * FROM Table1 T1 WHERE (SELECT COUNT(*) FROM Table2 T2 WHERE T1.iSlotNumber = T2.tEvent_Emp_Code_Num AND T2.dEvent_Date >= StartDate AND T2.dEvent_Date <= EndDate) = 0
    Покажет список кого не было в интервале между StartDate and EndDate ... вместо них соответственно подставлять нужные Вам значения ...

    Не совсем понятно зачем хранить дату и время двумя полями ?
     
  7. Jas

    Jas Гость

    Репутация:
    0
    структура была уже готовая. поэтому не могу ответить на ваш вопрос. тут еше проблема в том что отчет должен выводиться в формате типо такого:
    ФИО Дата отсутвия

    Вот как установить дату когда человек отсутвоал?
     
  8. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ааа.. это совсем другая задача ... какой раз убеждаюсь что надо уметь правильно спрашивать....в решении такой задачи одним ANSI SQL не обойдётесь.. или нужно использовать дополнительную таблицу с датами для подзапроса...
     
  9. Jas

    Jas Гость

    Репутация:
    0
    Тоесть вы хотите сказать что придеться всетаки писать циклический алгоритм. Но я просто что то смутно себе представляю каким образом я буду фиксировать даты в которые отсутсвовал тот или иной сотрудник.
     
  10. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ну одним запросом врядли получится без использования подручных средств .. как вариант создать таблицу со всеми днями(датами).. и потом делать подзапрос к этой таблице для поиска пропусков в основной таблице с датами...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей