|
|
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Т.е. есть поле - просто год, допустим 1901,1902,1905,1906,1908 И нужно чтоб выбрались 1903,1904,1907... Реально это? СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 10:52 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
А года в отдельных записях таблицы или как?Если да, то создай таплицу все года и в запросе свяжи со своей и найди все отсутствующие года в крайнем случае для удобства можно добавить еще задание параметра нижнего года и верхнего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 11:43 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Не... все данные в одной табличке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 11:54 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Где есть поле - просто год? В таблице, в форме (поле со списком) или еще где? И нужно чтоб выбрались откуда? Из той же таблицы? И при чем тут интервал? "1901,1902,1905,1906,1908" - не интервал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 12:02 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
В одной тоблице или в одной записи. Обясняю разницу. 1 Таблица разный записи. 1980 1981 1983 1985 Или в одном Поле (1980 1981 1983) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 12:04 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Народ... ну не делайте меня совсем тупым. я просто недавно на форуме..... я ж написал - поле - год... первая запись 1901 вторая 1902 третья 1903 и т.д. Т.е. в одной таблице в разных записях...... А интервал притом, что нужно взять минимум от этих чисел и максимум... т.е. зарее он неизвестен.... вот.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 12:51 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Массив & RecordSet? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 12:58 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Я все равно не понял. Да и Темный загадками изволит говорить :) Видимо, есть 2 таблицы с годами (назовем их t1 и t2). Тогда так можно выбрать записи t1 с годами, которых нет в t2: select t1.* from t1 left join t2 on t1.YearField=t2.YearField where t2.YearField is null; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 13:06 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
А какую версию Access мучаешь? Вот решение без программирования. Создаешь таблицу все_года 1 2 ... 20000 Если не критичен размер(Заполняешь в Екселе вставляешь в Аксес) Создаешь запрос мастером (в 2000точно есть) "Записи без подчененных" выбираешь таблицы все_года и свою с которой выбираються интрвалы. И все у тебя будет отбражены все записи с таблицы все_года у которых не найдено такой же значение с твоей таблицы. Можеш в этот запрос потом добавить ограничения или вручную или мин и макс с твоей таблицы. Если файл меньше 1МБ и такой вариант решения твоей проблемы тебя устраивает, можешь на sv80@ukr.net сбросить посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 13:15 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 13:16 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
2Темный Я ни о каком заполнении не говорил. В условии сказано: "<Есть> 1901,1902,1905,1906,1908. И нужно чтоб выбрались 1903,1904,1907". Видимо, это в разных таблицах. Если "Есть" в одном поле - получиться геморрой. Если все-таки нужно выбрать записи, не входящие в заданный интервал, будет совсем другой запрос. Но пусть автор об этом по-русски скажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 13:21 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
GeoНо пусть автор об этом по-русски скажет. Не дождетесь. (с) YAC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 13:22 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Согласен, может постановка задачи понятна только мне, но краткость - сестра таланта, и от того, как задашь вопрос, зависит и ответ :) я наверное перестарался... ок. еще раз с нуля.... Есть таблица... в ней поля: 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 год минимальный и максимальный может отличаться...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 16:54 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
2 Yura Zavaliy См. здесь же ответ sv80 сегодня, 13:15 [458079] Пример запроса давал Гео сегодня, 13:06 [458069] Имхо, более чем достаточно для решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 17:02 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Ну слава богу, разобрались с условием. Тогда 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2003, 18:00 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Geo, а можно мне сейчас ответить? А то до понедельника долго ждать Правда, короче сделать вряд ли получится. Разве только запрос tt2 я бы написал так : Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 14:01 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
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 не понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 14:31 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
Последний мой запрос - чушь полная. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 15:31 |
|
||
|
Как создать запрос, который бы выбрал те года, которых нет в интервале дат?
|
|||
|---|---|---|---|
|
#18+
2 Geo У меня ХР ,там все работает.Честно говоря на between мне тоже давал ошибку.Я подумал , что где то сделал синтаксическую ошибку и переписал используя >= and <= В остальном проблем не было Чтобы не быть голословным, вот мой аналог твоего запроса tt2 Код: plaintext 1. 2. 3. 4. Где table12==MyYears , table13==MyTable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 16:57 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32351351&tid=1677687]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 446ms |

| 0 / 0 |
