Изменить значение, возвращаемое запросом SELECT
От: lighting  
Дата: 28.06.10 11:23
Оценка:
База MS Access. В таблице есть поле с индексами, нужно объединить несколько индексов в один в запросе, напр.
индексы: 1, 2, 3,7, 10, 12, 15
Надо чтобы в результате запроса индексы 1, 2, 3, 7 объединились в индекс 5 и в результате запрос вернул:
5, 5, 5, 5, 10, 12, 15.
SWITCH не предлагать, т.к. в реальной задаче его возможностей не хватает: "Слишком сложное выражение в выражении запроса Switch".
sql
Re: Изменить значение, возвращаемое запросом SELECT
От: night beast СССР  
Дата: 28.06.10 11:39
Оценка: 1 (1)
Здравствуйте, lighting, Вы писали:

L>База MS Access. В таблице есть поле с индексами, нужно объединить несколько индексов в один в запросе, напр.

L>индексы: 1, 2, 3,7, 10, 12, 15
L>Надо чтобы в результате запроса индексы 1, 2, 3, 7 объединились в индекс 5 и в результате запрос вернул:
L>5, 5, 5, 5, 10, 12, 15.
L>SWITCH не предлагать, т.к. в реальной задаче его возможностей не хватает: "Слишком сложное выражение в выражении запроса Switch".

сделай таблицу или функцию, которая переводит одни индексы в другие.
Re: Изменить значение, возвращаемое запросом SELECT
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 28.06.10 11:44
Оценка:
Здравствуйте, lighting, Вы писали:

L>База MS Access. В таблице есть поле с индексами, нужно объединить несколько индексов в один в запросе, напр.

L>индексы: 1, 2, 3,7, 10, 12, 15
L>Надо чтобы в результате запроса индексы 1, 2, 3, 7 объединились в индекс 5 и в результате запрос вернул:
L>5, 5, 5, 5, 10, 12, 15.
L>SWITCH не предлагать, т.к. в реальной задаче его возможностей не хватает: "Слишком сложное выражение в выражении запроса Switch".

Left Join MS Acсess умеет? Если да, то надо просто заджойнить вашу таблицу с таблицей след. вида

SubstTable
Index DisplayIndex
1 5
2 5
3 5
4 5
5 5
6 5
7 5
10 NULL
11 NULL
12 NULL
....


Строки где NULL можно и не добавлять. Запрос для MSSQL будет следующим, я думаю можно и для Access модифицировать:

select isnull(DisplayIndex, Index) from MyTable
left join  SubstTable on MyTable.Index = SubstTable.Index



Если индексов ограниченное количество и можно их все вбить таблицу подстановок, то можно убрать Isnull и замениь left join на inner join
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: Изменить значение, возвращаемое запросом SELECT
От: wildwind Россия  
Дата: 28.06.10 12:07
Оценка:
Здравствуйте, lighting, Вы писали:

Не понятно каков принцип "объединения".
Как вариант завести таблицу "трансляции" индексов.
Re: Изменить значение, возвращаемое запросом SELECT
От: lighting  
Дата: 28.06.10 13:15
Оценка:
Спасибо всем откликнувшимся. Методом научного тыка выяснил что Access понимает не более 14 условий в switch. Проблема решилась делением всей таблицы на куски по 14 индексов и слияние результатов с помощью union.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.