powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
19 сообщений из 19, страница 1 из 1
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351311
Yura Zavaliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. есть поле - просто год, допустим 1901,1902,1905,1906,1908
И нужно чтоб выбрались 1903,1904,1907... Реально это?
СПАСИБО!
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351344
sv80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А года в отдельных записях таблицы или как?Если да, то создай таплицу все года и в запросе свяжи со своей и найди все отсутствующие года в крайнем случае для удобства можно добавить еще задание параметра нижнего года и верхнего.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351351
Yura Zavaliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не... все данные в одной табличке...
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351358
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где есть поле - просто год? В таблице, в форме (поле со списком) или еще где?
И нужно чтоб выбрались откуда? Из той же таблицы?
И при чем тут интервал? "1901,1902,1905,1906,1908" - не интервал.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351360
sv80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной тоблице или в одной записи. Обясняю разницу.
1 Таблица разный записи.
1980
1981
1983
1985

Или в одном Поле (1980 1981 1983)
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351390
Yura Zavaliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ... ну не делайте меня совсем тупым. я просто недавно на форуме.....
я ж написал - поле - год...
первая запись 1901
вторая 1902
третья 1903 и т.д.
Т.е. в одной таблице в разных записях......
А интервал притом, что нужно взять минимум от этих чисел и максимум... т.е. зарее он неизвестен.... вот....
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351393
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Массив & RecordSet?
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351395
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все равно не понял. Да и Темный загадками изволит говорить :)

Видимо, есть 2 таблицы с годами (назовем их t1 и t2).

Тогда так можно выбрать записи t1 с годами, которых нет в t2:
select t1.* from t1 left join t2 on t1.YearField=t2.YearField where t2.YearField is null;
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351404
sv80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какую версию Access мучаешь?
Вот решение без программирования.
Создаешь таблицу все_года
1
2
...
20000 Если не критичен размер(Заполняешь в Екселе вставляешь в Аксес)
Создаешь запрос мастером (в 2000точно есть) "Записи без подчененных" выбираешь таблицы все_года и свою с которой выбираються интрвалы.
И все у тебя будет отбражены все записи с таблицы все_года у которых не найдено такой же значение с твоей таблицы. Можеш в этот запрос потом добавить ограничения или вручную или мин и макс с твоей таблицы.

Если файл меньше 1МБ и такой вариант решения твоей проблемы тебя устраивает, можешь на sv80@ukr.net сбросить посмотрю.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351406
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo:
Пилёхо. Сафсем пилёхо. Сматри, шо будит:

t1
1907
1909
1911
1912
1913

t2 (А ее вообще пока нету. И заполнять ее как - ХЗ. Если заполнить от первого пришествия (m) до второго (n), то ...)
m
m+1
m+2
...
1907
1908
1909
1910
1911
1912
1913
...
n-2
n-1
n

Результут запроса:
m
m+1
m+2
...
1908
1910
...
n-2
n-1
n
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351409
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Темный
Я ни о каком заполнении не говорил.
В условии сказано: "<Есть> 1901,1902,1905,1906,1908. И нужно чтоб выбрались 1903,1904,1907".

Видимо, это в разных таблицах. Если "Есть" в одном поле - получиться геморрой. Если все-таки нужно выбрать записи, не входящие в заданный интервал, будет совсем другой запрос. Но пусть автор об этом по-русски скажет.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351410
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeoНо пусть автор об этом по-русски скажет.
Не дождетесь. (с) YAC
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351557
Yura Zavaliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, может постановка задачи понятна только мне, но краткость - сестра таланта, и от того, как задашь вопрос, зависит и ответ :) я наверное перестарался... ок. еще раз с нуля.... Есть таблица... в ней поля:
ID - числовое (это не уникальное)
YEAR - число....
и еще много не относящихся к делу....
забито приблизительно так (допустим):
ID YEAR
1 1901
1 1902
1 1904
1 1906
1 1907
2 1902
2 1903
2 1907
Нужно выбрать записи, которые ВЫПАЛИ из интервала (интервалом я считаю года между минимальным годом для ID и максимальным). Т.е. для приведенного набора данных результат должен быть:
1 1903
1 1905
2 1904
2 1905
2 1906
Фух... Вроде все так.... Т.е. для разных ID год минимальный и максимальный может отличаться......
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351566
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Yura Zavaliy

См. здесь же ответ sv80
сегодня, 13:15 [458079]

Пример запроса давал Гео сегодня, 13:06 [458069]


Имхо, более чем достаточно для решения.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351590
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну слава богу, разобрались с условием. Тогда

1. Нужна табличка со всеми годами: 1900, 1901, 1902, ..., 2099. (Тут м.б. варианты - одну таблицу заменить на 2: 19, 20; 0,1,2,...9; и год формировать из них - но это уже мелочи) - у меня MyYears

2. Вот запросы (короче не умею, да и не надо, имхо). Если надо короче, подними вопрос в понедельник - (c)VIG даст.

Запрос tt1:
SELECT MyTable.id, Min(MyTable.MyYear) AS a, Max(MyTable.MyYear) AS b FROM MyTable GROUP BY MyTable.id;

Запрос tt2:
SELECT tt1.id, MyYears.MyYear FROM tt1, MyYears WHERE (((MyYears.MyYear) Between a And b));

Запрос tt3:
SELECT tt2.id, tt2.MyYear, MyTable.MyYear
FROM tt2 LEFT JOIN MyTable ON (tt2.MyYear = MyTable.MyYear) AND (tt2.id = MyTable.id) WHERE (((MyTable.MyYear) Is Null)) ORDER BY tt2.id, tt2.MyYear;
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351851
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo, а можно мне сейчас ответить? А то до понедельника долго ждать
Правда, короче сделать вряд ли получится. Разве только запрос tt2
я бы написал так :
Код: plaintext
1.
SELECT tt1.id, MyYears.MyYear 
FROM  MyYears LEFT JOIN tt1 on MyYears.MyYear Between a And b; 
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351857
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2(с)VIG
А у меня даже по-твоему не получилось, неправильный оператор And в On, мол.
А вот так можно?
SELECT tt1.id, MyYears.MyYear
FROM MyYears LEFT JOIN tt1 on ((MyYears.MyYear Between a And b) And (tt1.MyYear is null);
- тогда и tt3 не понадобится.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351874
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний мой запрос - чушь полная.

2(с)VIG
Твой запрос говорит ошибку:

"За оператором Between отсутствует оператор And в выражении запроса 'MyYears.MyYear Between a'." (3075)

Он, же, чуть видоизмененный:

SELECT tt1.id, MyYears.MyYear
FROM MyYears LEFT JOIN tt1 on (MyYears.MyYear Between a And b);

говорит:

"Не поддерживается выражение объединения." (Ошибка 3296).

Акцесс 97.
...
Рейтинг: 0 / 0
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
    #32351905
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
У меня ХР ,там все работает.Честно говоря на between мне тоже давал ошибку.Я подумал , что где то сделал синтаксическую ошибку и переписал
используя >= and <= В остальном проблем не было
Чтобы не быть голословным, вот мой аналог твоего запроса tt2
Код: plaintext
1.
2.
3.
4.
SELECT t2.id, t.num
FROM table12 AS t 
LEFT JOIN [select t1.id,min(num) as Min_n,max(num) as Max_n from  table13 as t1 group by t1.id]. AS t2 
ON (t.num <= t2.max_n) AND (t.num >= t2.min_n)
ORDER BY  1 ,  2 ;

Где table12==MyYears , table13==MyTable
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]