Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2010, 08:42   #1
Ivan_RIV
 
Регистрация: 17.03.2010
Сообщений: 7
По умолчанию SQL запрос по дате

Добрый день! Есть БД состоящая из одной таблицы с полями: Код_сотрудника, ФИО_сотрудника, Дата_рождения, Территория, Дата_выезда, Дата_заезда. Помогите пожалуйста составить запрос, который выводит количество сотрудников без повторений которые выезжали (Дата_выезда) в определенный период. Дата_выезда вводится пользователем с клавиатуры, при этом нужно получить информацию за год, за месяц какого либо года, за конкретную дату. Запрос типа:
SELECT DISTINCT Главная.ФИО_сотрудника, Главная.Дата_рождения, Главная.Территория, Главная.Дата_выеезда
FROM Главная
WHERE Главная.Дата_выезда = Дата_выезда;
выводит только по конкретной дате, например 01.01.2010. Можно ли сделать так чтобы, введя, например, *.*.2010 или *.01.2010 выводились записи за определенный год и месяц года, соответственно? Спасибо!
Ivan_RIV вне форума Ответить с цитированием
Старый 25.03.2010, 09:03   #2
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Сначала по структуре:
ИМХО, она неправильная. Сотрудники - одна таблица, командировки- другая. Один и тот же сотрудник может ведь выезжать в командировки неоднократно?

По WHERE... А не лучше ли вам использовать диапазон дат, так ведь удобней?
Abrakadabra вне форума Ответить с цитированием
Старый 25.03.2010, 09:03   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

WHERE YEAR(Главная.Дата_выезда) = YEAR(Дата_выезда);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2010, 09:18   #4
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
WHERE YEAR(Главная.Дата_выезда) = YEAR(Дата_выезда);
У автора запрос годом не ограничен, если внимательно прочитать.

Делайте по диапазону (BETWEEN), тогда и будет Вам счастье..

Последний раз редактировалось Abrakadabra; 25.03.2010 в 09:24.
Abrakadabra вне форума Ответить с цитированием
Старый 25.03.2010, 12:18   #5
Ivan_RIV
 
Регистрация: 17.03.2010
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Abrakadabra Посмотреть сообщение
У автора запрос годом не ограничен, если внимательно прочитать.

Делайте по диапазону (BETWEEN), тогда и будет Вам счастье..
Если можно поподробнее... Как исправить исходный запрос (использовать BETWEEN)... мне необходимо ввести диапазон дат с клавиатуры...
Ivan_RIV вне форума Ответить с цитированием
Старый 25.03.2010, 23:03   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Ivan_RIV.
"..Если можно поподробнее...." - "подробностей" может быть много, их количество зависит от "подробностей" о которых ничего не сообщили Вы:
". мне необходимо ввести диапазон дат с клавиатуры..." - непосредственно при открытии в запрос, применяется форма,...?
Стоит уточните "детали"
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 26.03.2010, 07:58   #7
Ivan_RIV
 
Регистрация: 17.03.2010
Сообщений: 7
По умолчанию

Добрый день, Teslenko_EA!
... "применяется форма"...? Формы для запроса нет, есть только сам запрос и кнопка, для его вызова. Кнопка располагается а на главной форме. Форма служит для ввода данных в таблицу БД (всего одна таблица в БД, как описано выше). Хотелось бы сделать так чтобы при активации запроса, выводилось окно с запросом на дату, в него необходимо ввести дату выезда с клавиатуры В формате *.*.* -это за весь период и т.д.... (1)
..."мне необходимо ввести диапазон дат с клавиатуры"... - применительно к BETWEEN ... т.е. либо первый вариант (1) или если использовать в запросе BETWEEN , то чтобы даты (начальную и конечную) можно было вводить с клавиатуры...
Ivan_RIV вне форума Ответить с цитированием
Старый 26.03.2010, 15:46   #8
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Цитата:
Сообщение от Ivan_RIV Посмотреть сообщение
SELECT DISTINCT Главная.ФИО_сотрудника, Главная.Дата_рождения, Главная.Территория, Главная.Дата_выеезда
FROM Главная
WHERE Главная.Дата_выезда = Дата_выезда;
выводит только по конкретной дате, например 01.01.2010. Можно ли сделать так чтобы, введя, например, *.*.2010 или *.01.2010 выводились записи за определенный год и месяц года, соответственно? Спасибо!
Попробуй так:
Код:
SELECT DISTINCT Главная.ФИО_сотрудника, Главная.Дата_рождения, Главная.Территория, Главная.Дата_выеезда
FROM Главная
HAVING (((Format([Главная.Дата_выезда],"m"))=[Месяц?]));
Должен выводить за месяц, который будет запрашиваться каждый раз перед выполнением
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 26.03.2010, 23:22   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Ivan_RIV.
"..Формы для запроса нет.." - очень жаль, вводить значения условия отбора (параметры запроса) без интерфейса, такая идея подобна лошади которая тянет автомобиль, у них с автомобилем большой потенциал а применение не верно, эффект будет лучше если лошадь везти на автомобиле.
Приложив минимальное количество усилий, создав форму с полями ввода дат, Вы избавите себя (и пользователей) от огромного числа ошибок во время работы Вашего "Продукта".
Евгений.

Последний раз редактировалось Teslenko_EA; 26.03.2010 в 23:24.
Teslenko_EA вне форума Ответить с цитированием
Старый 29.03.2010, 12:32   #10
Ivan_RIV
 
Регистрация: 17.03.2010
Сообщений: 7
По умолчанию

Большое спасибо, mchip! Помогло!
Ivan_RIV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос по дате и времени Demien БД в Delphi 12 29.12.2013 10:38
Запрос по дате program123 БД в Delphi 4 17.03.2010 19:53
Запрос по дате ННС Помощь студентам 4 20.04.2009 19:30
SQL запрос по дате ННС Помощь студентам 0 04.04.2009 20:03
SQL Запрос по дате SERG1980 БД в Delphi 4 16.03.2009 14:04