ник: Krusz
Есть таблица (во вложении).
вначале, что за столбцы.
код - обычный счетчик
сотрудник - сюда записывается код из таблицы сотрудники
Номер - сюда записывается код из таблицы телефонов.
Действие - принимает два значения (выдача/сдача) (выдается телефон или сдается определенным сотрудником)
Дата заявления - (дата акта приема или сдачи телефона)
kod - сюда записывается код из этой же таблицы. по правилу: код - соответствует записиы выдаваемому/сдаваемому сотруднику определеенный телефон, что бы связать две записи (выдачи и сдачи телефона одинм сотрудником).
и получается, что поле kod будет пустым если телефон выдан, но еще не сдан.
телефон дпусти с кодом 67 заводится в базу попадает в резерв. т.е получается строчка
для резерва тоже есть определенный код пустьбудет 1.
код | kod | сотрудник | номер | действие | дата заявления
1 |____| 1 | 67 | выдача | 02/02/2011
далее есть необходимость выдать телефон новому сотруднику (пусть будет код = 3)
но для того чтобы выдать телефон сотруднику нужно его вывести из резерва. дата заявления вывода из резерва будет равна дате выдачи сотруднику. т.е. получается еще две строчки, а так же в первую строчку записываем в поле kod код строки вывода из резерва, а в строку кода вывода из резерва записываем код ввода в резерв. т.е получаем в конечном этоге 3 записи.
код | kod | сотрудник | номер | действие | дата заявления
1 | 2 | 1 | 67 | выдача | 02/02/2011
2 | 1 | 1 | 67 | сдача | 01/03/2011
3 | ____| 3 | 67 | выдача | 01/03/2011
теперь нужно сдать телефон сотрудником обратно в резерв. по подобию ситуации описанной выше получаем следующее
код | kod | сотрудник | номер | действие | дата заявления
1 | 2 | 1 | 67 | выдача | 02/02/2011
2 | 1 | 1 | 67 | сдача | 01/03/2011
3 | 4 | 3 | 67 | выдача | 01/03/2011
4 | 3 | 3 | 67 | сдача | 05/06/2011
5 |____| 1 | 67 | выдача | 05/06/2011
ну и т.д. все это работает все это заносится и вроде быпроблем нет. информация сохраняется
теперь втала задача сделать запрос выбрать всех сотрудников, кто пользовался телефоном в определенный меся и год.
пока решил это с помощью нескольких запросов.
1. первый запрос я делаю из этой таблицы всех записей соответсвующие условию [дата заявления] <= последнее число интересующего месяца определеннго года и действие=выдача
2. второй запрос я делаю из этой же таблицы всех записей [дата заявления] < первое число интересующего месяца определеннго года и действие=сдача
3. третий запрос: выбираю все поля из первого запроса и только тех записей из вторго запроса где код первого запроса совпадает с kod второго запрса и ставлю фильтр kod второго запроса в результирующей тбалице равен null и получаю список сотрудников, котрые пользовались телефонами в определенный месяц.
+ делаю еще несколлько запросов, что бы вывести один столбец выдан, второй столбец сдан
может можно как то проще сделать запрос?
P.S. прошу прощения за такой большой текст и сумбур. если уйдет сообщение в off тоже пойму