Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Люди!!!
Имеется набор неких данных (все текстовые), назовем их «КООДЫ»
«28010000», «28010001», «28010002», «28010003», и т.д до «28019999». Далее
«46010000», «46010001», «46010002», «46010003», и т.д до «46019999». Встречаются и одинокие данные типа «89675643». Вообщем, очень много данных. Поместить их в одну таблицу сами понимаете не возможно. Но можно задать их в виде:
«2801-2802» или «28010000-28019999» и т.д.
Задача: в некой таблице («ТаблицаКодов») формируется список значений такого же формата как указано выше. Нужно из этой таблицы выбрать только те, которые совпадают со значениями из таблицы «КООДЫ». Не могу составить такой запрос. Пытался использовать Case, Between, Like “2810*”. Но как сформировать список таблицы «КООДЫ» даже ума не приложу.
30 июл 04, 20:50    [850586]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Yanis
Member

Откуда: Казахстан, Актау
Сообщений: 4219
Ukraina
Поместить их в одну таблицу сами понимаете не возможно.

Почему?
30 июл 04, 21:43    [850628]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Потому, что их согласно комбинатории (ведь я показал только чать) около ... вообщем очень много. Подсчитайте вариант от "280 100 000" до "280 199 999", а таких условий у меня около 13. Даже есть вариант от "010600990" до "011999999" это 1 399 009 вариантов.
30 июл 04, 22:14    [850647]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Yanis
Member

Откуда: Казахстан, Актау
Сообщений: 4219
1. Много - это сколько, посчитай плз поточнее
2. Какой смысл в хранении этих данных?
30 июл 04, 22:17    [850652]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Не понятно что надо. Или выбрать существующие коды из таблицы КООДЫ
на основании критериев из таблицы ТаблицаКодов,
или же сгенерировать все возможные коды на на основании информации из таблицы ТаблицаКодов
30 июл 04, 22:19    [850653]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Это делается следующим образом (например, для почтовых индексов). Заводится таблица с двумя полями: От и До. И проверка данного значения пишется так:

От <= X and X <= До

Всё.
30 июл 04, 22:31    [850664]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Или переводя на SQL-ский
between [ОТ] and [ДО]

Но я все таки думаю, что ему надо сгенерировать все ,что между ОТ и ДО
30 июл 04, 22:44    [850672]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
(c)VIG
Но я все таки думаю, что ему надо сгенерировать все ,что между ОТ и ДО

А почему ты так думаешь? Я вот читаю:

Ukraina
Задача: в некой таблице («ТаблицаКодов») формируется список значений такого же формата как указано выше. Нужно из этой таблицы выбрать только те, которые совпадают со значениями из таблицы «КООДЫ».

То есть в таблице сидят несколько значений и надо проверить их на принадлежность диапазонам.
30 июл 04, 23:05    [850687]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Саныч, прочитай мой пост от 22:19 и ты увидишь, что я ничего не думаю, а спрашиваю , что все таки надо. Так как автор написал взаимоисключающие вещи "Поместить их в одну таблицу сами понимаете не возможно" и "Нужно из этой таблицы выбрать только те, которые совпадают со значениями из таблицы
«КООДЫ»
".
С другой стороны первая задача достаточно тривиальна да и "Пытался использовать Case, Between, Like “2810*”."
Вот я предположил ...
30 июл 04, 23:23    [850705]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Это не взаимоисключающие вещи. Невозможно поместить в таблицу полный список. Поэтому в таблицу помещаем только границы диапазонов.

Но отсюда не следует, что таблицы нет. Она есть, но в ней нет полного списка.
30 июл 04, 23:34    [850719]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
Короче, сварганил быстренько на T-SQL (Аксеса сейчас нет под рукой) cкрипт , который генерит
номера в диапазоне 28010000-28019999 и 46010000-46019999

declare @nums table (n int)
insert @nums
select 0 n union all select 1 union all select 2 union all select 3 union all select 4 union all
select 4  union all select 6 union all select 7 union all select 8 union all select 9

select bb.base + replace(str(1000*a.n +100*b.n + 10*c.n +d.n,4,0),' ','0')
from @nums a,@nums b,@nums c,@nums d,
 (select '2801' base union all select '4601') bb
order by 1
Перевести на аксес -дело техники. Оставляю это Украине в качестве домашнего задания
Подсказка:
replace(str(1000*a.n +100*b.n + 10*c.n +d.n,4,0),' ','0')  =format(1000*a.n +100*b.n + 10*c.n +d.n,"0000")
30 июл 04, 23:39    [850726]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
А зачем??? Он же сказал: "Даже есть вариант от "010600990" до "011999999" это 1 399 009 вариантов". Зачем генерить миллион записей, если можно обойтись одной?
31 июл 04, 00:01    [850742]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
(c)VIG
Member

Откуда:
Сообщений: 1507
автор
А зачем???

Ради спортивного интереса :)
Важна идея . Я ,например, этим приемом часто пользуюсь когда надо получить "на лету" диапазон дат.
А определять в какой диапазон попадает некоторое число -тривиально и не интересно
31 июл 04, 00:21    [850749]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Извините за молчание, но Интердат вылетел. Саныч ты меня понял до основания. Я думал. что мои объяснения никто не поймет из-за моих умений описывать ситуации.
Действительно: создал некую таблицу "ОТ и ДО". Получилось 9 записей с полями "ОТ" и "ДО".
Код ОТ ДО
1 0280000 02900000
2 3400000 34001000
3 6707800 69012890
и т.д.

Теперь создаю запрос с условием Between "ОТ" and "ДО".
Но мне приходиться вставлять поочереди каждое значение. А как сгенерировать автоматический переход на следующую запись.
Т.е. получается слишком длинный запрос (Between "0280000" and "02900000") and (Between "3400000" and "34001000") and (... т.д. Плюс ко всему эти данные могут быть изменены, а что еще хуже могут быть добавлены диапазоны, что приведет к ручному изменению запроса, что согласитесь не удобно.
Пробывал использовать
Select Case [1]
Case "01000" To "01040"
MsgBox "01000 To 01040"
Case "01041" To "01100"
MsgBox "01041 To 01100"
Case "01101" To "01200"
MsgBox "01101 To 01200"
Case Else '
MsgBox "Not between 1 and 10"
End Select
Но опять сталкиваюсь с проблемой обновления диапазона
31 июл 04, 21:49    [851047]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
А зачем копировать данные в программу???

select * from ТвояТаблица inner join МояТаблица on ТвоеПоле between От and До
31 июл 04, 21:53    [851049]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Есть таблицы:
1) «Наименование»: Код (индекс), Наименование (текст)
2) «Проверка»: Код (индекс), ОТ (текст), До (текст)
Попытался вставить в запрос следующее:

select * from Наименование inner join Проверка on Наименование.Наименование between Проверка.От and Проверка.До

Дает ошибку, причем говорит, что нет «AND» после between
Что делать? Или я не туда вставляю? (подход к решению таков: создаю простой запрос, захожу в режим SQL и вставляю эту строчку)
31 июл 04, 23:11    [851067]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Вроде все правильно...
31 июл 04, 23:15    [851070]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Саныч!!! Труба! Ничего не понимаю. Просто, как дурак, три раза написал одно и тоже:

SELECT Наименование
FROM Наименование INNER JOIN Проверка ON (Наименование.Наименование) between Проверка.От and Проверка.До;


Причем первые два раза давала синтактическую ошибку.
Может быть дело все таки было в скобках??? Но сейчас работает.

Это просто ГЕЕЕНИИАААЛЬНОООООО!
Спасибо! Но буду признателен в тройне (жаль, что не на троих), если подтвердите мое предположение насчет скобок, ну в крайнем случае, почему это сначало не работало....
1 авг 04, 00:24    [851090]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Ukraina
Это просто ГЕЕЕНИИАААЛЬНОООООО!

SQL вообще гениальный язык. :^)

Почему Аксесс вдруг захотел скобки - не понимаю. Слава тому, кто сообразил, что Аксессу хочется именно этого...
1 авг 04, 00:28    [851091]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Вы мне льстите? Скобки поставил я! Но наехать на скобки позволили ВЫ!
Еще раз спасибо.
Ну еще раз посожалею, что мы все так далеки друг от друга, а то можно было по 100 гр. фронтовых. На днях обязательно выпью за здоровье и успехи всех форумян!!! Ну и за ВАС персонально.
Гип-Гип-УРААААААААААААААААААААА!
1 авг 04, 00:43    [851093]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Блин! Хнык! Блин! :^(
Ну почему мне все говорят "Вы"?
Пойду поменяю ник на Вовочку...
1 авг 04, 00:47    [851095]     Ответить | Цитировать Сообщить модератору
 Re: Создание запроса выбора по данным таблицы, которую не возможно заполнить  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Ни в коем случае!!!! Об этом надо поговорить на Лестнице.
ВС это звучит гордо!
1 авг 04, 01:25    [851103]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить