Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание запроса выбора по данным таблицы, которую не возможно заполнить / 22 сообщений из 22, страница 1 из 1
30.07.2004, 20:50:07
    #32630211
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Люди!!!
Имеется набор неких данных (все текстовые), назовем их «КООДЫ»
«28010000», «28010001», «28010002», «28010003», и т.д до «28019999». Далее
« 46010000», «46010001», «46010002», «46010003», и т.д до «46019999 ». Встречаются и одинокие данные типа «89675643». Вообщем, очень много данных. Поместить их в одну таблицу сами понимаете не возможно. Но можно задать их в виде:
« 2801-2802 » или « 28010000-28019999 » и т.д.
Задача: в некой таблице («ТаблицаКодов» ) формируется список значений такого же формата как указано выше. Нужно из этой таблицы выбрать только те, которые совпадают со значениями из таблицы «КООДЫ». Не могу составить такой запрос. Пытался использовать Case, Between, Like “2810*”. Но как сформировать список таблицы « КООДЫ » даже ума не приложу.
...
Рейтинг: 0 / 0
30.07.2004, 21:43:36
    #32630234
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
UkrainaПоместить их в одну таблицу сами понимаете не возможно.
Почему?
...
Рейтинг: 0 / 0
30.07.2004, 22:14:35
    #32630243
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Потому, что их согласно комбинатории (ведь я показал только чать) около ... вообщем очень много. Подсчитайте вариант от "280 100 000" до "280 199 999", а таких условий у меня около 13. Даже есть вариант от "010600990" до "011999999" это 1 399 009 вариантов.
...
Рейтинг: 0 / 0
30.07.2004, 22:17:06
    #32630246
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
1. Много - это сколько, посчитай плз поточнее
2. Какой смысл в хранении этих данных?
...
Рейтинг: 0 / 0
30.07.2004, 22:19:21
    #32630247
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Не понятно что надо. Или выбрать существующие коды из таблицы КООДЫ
на основании критериев из таблицы ТаблицаКодов,
или же сгенерировать все возможные коды на на основании информации из таблицы ТаблицаКодов
...
Рейтинг: 0 / 0
30.07.2004, 22:31:07
    #32630254
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Это делается следующим образом (например, для почтовых индексов). Заводится таблица с двумя полями: От и До. И проверка данного значения пишется так:

От <= X and X <= До

Всё.
...
Рейтинг: 0 / 0
30.07.2004, 22:44:13
    #32630255
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Или переводя на SQL-ский
between [ОТ] and [ДО]

Но я все таки думаю, что ему надо сгенерировать все ,что между ОТ и ДО
...
Рейтинг: 0 / 0
30.07.2004, 23:05:17
    #32630257
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
(c)VIGНо я все таки думаю, что ему надо сгенерировать все ,что между ОТ и ДО
А почему ты так думаешь? Я вот читаю:

UkrainaЗадача: в некой таблице («ТаблицаКодов» ) формируется список значений такого же формата как указано выше. Нужно из этой таблицы выбрать только те, которые совпадают со значениями из таблицы «КООДЫ».
То есть в таблице сидят несколько значений и надо проверить их на принадлежность диапазонам.
...
Рейтинг: 0 / 0
30.07.2004, 23:23:21
    #32630260
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Саныч, прочитай мой пост от 22:19 и ты увидишь, что я ничего не думаю, а спрашиваю , что все таки надо. Так как автор написал взаимоисключающие вещи "Поместить их в одну таблицу сами понимаете не возможно" и "Нужно из этой таблицы выбрать только те, которые совпадают со значениями из таблицы
«КООДЫ»
".
С другой стороны первая задача достаточно тривиальна да и "Пытался использовать Case, Between , Like “2810*”."
Вот я предположил ...
...
Рейтинг: 0 / 0
30.07.2004, 23:34:55
    #32630264
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Это не взаимоисключающие вещи. Невозможно поместить в таблицу полный список. Поэтому в таблицу помещаем только границы диапазонов.

Но отсюда не следует, что таблицы нет. Она есть, но в ней нет полного списка.
...
Рейтинг: 0 / 0
30.07.2004, 23:39:28
    #32630267
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Короче, сварганил быстренько на T-SQL (Аксеса сейчас нет под рукой) cкрипт , который генерит
номера в диапазоне 28010000-28019999 и 46010000-46019999

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
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 
Перевести на аксес -дело техники. Оставляю это Украине в качестве домашнего задания
Подсказка:
Код: plaintext
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")
...
Рейтинг: 0 / 0
31.07.2004, 00:01:59
    #32630270
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
А зачем??? Он же сказал: "Даже есть вариант от "010600990" до "011999999" это 1 399 009 вариантов". Зачем генерить миллион записей, если можно обойтись одной?
...
Рейтинг: 0 / 0
31.07.2004, 00:21:20
    #32630273
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
авторА зачем???
Ради спортивного интереса :)
Важна идея . Я ,например, этим приемом часто пользуюсь когда надо получить "на лету" диапазон дат.
А определять в какой диапазон попадает некоторое число -тривиально и не интересно
...
Рейтинг: 0 / 0
31.07.2004, 21:49:38
    #32630487
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Извините за молчание, но Интердат вылетел. Саныч ты меня понял до основания. Я думал. что мои объяснения никто не поймет из-за моих умений описывать ситуации.
Действительно: создал некую таблицу "ОТ и ДО". Получилось 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
Но опять сталкиваюсь с проблемой обновления диапазона
...
Рейтинг: 0 / 0
31.07.2004, 21:53:44
    #32630489
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
А зачем копировать данные в программу???

select * from ТвояТаблица inner join МояТаблица on ТвоеПоле between От and До
...
Рейтинг: 0 / 0
31.07.2004, 23:11:00
    #32630504
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Есть таблицы:
1) « Наименование »: Код (индекс), Наименование (текст)
2) « Проверка »: Код (индекс), ОТ (текст), До (текст)
Попытался вставить в запрос следующее:

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

Дает ошибку, причем говорит, что нет «AND» после between
Что делать? Или я не туда вставляю? (подход к решению таков: создаю простой запрос, захожу в режим SQL и вставляю эту строчку)
...
Рейтинг: 0 / 0
31.07.2004, 23:15:15
    #32630507
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Вроде все правильно...
...
Рейтинг: 0 / 0
01.08.2004, 00:24:55
    #32630521
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Саныч!!! Труба! Ничего не понимаю. Просто, как дурак, три раза написал одно и тоже:

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


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

Это просто ГЕЕЕНИИАААЛЬНОООООО!
Спасибо! Но буду признателен в тройне (жаль, что не на троих), если подтвердите мое предположение насчет скобок, ну в крайнем случае, почему это сначало не работало....
...
Рейтинг: 0 / 0
01.08.2004, 00:28:03
    #32630522
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
UkrainaЭто просто ГЕЕЕНИИАААЛЬНОООООО!
SQL вообще гениальный язык. :^)

Почему Аксесс вдруг захотел скобки - не понимаю. Слава тому, кто сообразил, что Аксессу хочется именно этого...
...
Рейтинг: 0 / 0
01.08.2004, 00:43:13
    #32630524
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Вы мне льстите? Скобки поставил я! Но наехать на скобки позволили ВЫ!
Еще раз спасибо.
Ну еще раз посожалею, что мы все так далеки друг от друга, а то можно было по 100 гр. фронтовых. На днях обязательно выпью за здоровье и успехи всех форумян!!! Ну и за ВАС персонально.
Гип-Гип-УРААААААААААААААААААААА!
...
Рейтинг: 0 / 0
01.08.2004, 00:47:51
    #32630526
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Блин! Хнык! Блин! :^(
Ну почему мне все говорят "Вы"?
Пойду поменяю ник на Вовочку...
...
Рейтинг: 0 / 0
01.08.2004, 01:25:16
    #32630533
Ukraina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса выбора по данным таблицы, которую не возможно заполнить
Ни в коем случае!!!! Об этом надо поговорить на Лестнице.
ВС это звучит гордо!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание запроса выбора по данным таблицы, которую не возможно заполнить / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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