|
|
|
| Таблица SourceData
поля:
pid - персональный ИД пользователя (Длинное целое)
fDay - дата события (дата/время)
fTime - время события (дата/время)
punch - событие (1 - вход, 0 - выход)
Таблица atWT
поля:
id - счетчик, ключевое, для работы с запросами и пр.
pid - персональный ИД пользователя (Длинное целое)
fDay - дата события (дата/время)
fTime - время события (дата/время)
punch - событие (1 - вход, 0 - выход)
Собственно данные из SourceData запросом 1:1 переносятся в atWT после проверки корректности
Когда в atWT у меня такие данные:
pid fday ftime punch
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
а в SourceData такие данные:
pid fday ftime punch
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0
То запрос, который я привожу ниже добавляет только нужные мне новые строки:
SELECT SourceData.pid, SourceData.fday, SourceData.ftime, SourceData.punch
FROM (SELECT atWT.pid, atWT.fDay, atWT.fTime, atWT.punch
FROM atWT INNER JOIN SourceData ON (atWT.pid = SourceData.pid) AND (atWT.fDay = SourceData.fday)
WHERE ((SourceData.PID) Is Not Null)
GROUP BY atWT.pid, atWT.fDay, atWT.fTime, atWT.punch
) as Q2
RIGHT JOIN SourceData ON Q2.pid=SourceData.pid
WHERE ((Q2.fday) <> (SourceData.fday))
GROUP BY SourceData.pid, SourceData.fday, SourceData.ftime, SourceData.punch
|
Добавлены:
pid fday ftime punch
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0
Но, если файл обработать повторно ( а такое может быть - ошибочное нажатие, например)
то данные добавляются еще раз, причем обе строки:
pid fday ftime punch
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0
Поэтому, запрос мой неверен, а как нааписать правильный - уж мозг выкипел.... | |
|
| |
|
|
|
| С чего вдруг запрос не верен, коли он добавляет то, что надо. Попробуйте ограничить количество срабатываний. Например: прежде чем добавить, проверить есть ли данная информация уже в таблице. [ fday]&[ftime]&[punch]
И если в таблице такая запись есть, то запрос не добавляет.
Что-то типа If Dcount(.....)<1 then (запрос на добавление) else end if
Одинаковые данные хоть пять раз нажимай на кнопку, не добавятся. | |
|
| |