Как изменить результаты в запросе Access? - PullRequest
1 голос
/ 20 декабря 2010

У меня есть таблица, мы будем называть ее пользователями.

id username type

Поле типа представляет собой двухсимвольный тип, поэтому у каждого пользователя есть US, MO, AD.Не уверен, почему первоначальный разработчик сделал это, но я, к сожалению, не могу изменить этот метод.

1 mike US
2 Tim AD
3 mark MO

Вместо того, чтобы возвращать типы доступа US, AD ... и т. Д. В Access, я хотел бы запрос заменитьUS с USER, замените MO на MODERATOR и замените AD на ADMIN.

Возможно ли это?

Вроде как SELECT * ИЗ ПОЛЬЗОВАТЕЛЕЙ, а затем в операторах if в Access (если US, то USER).Не знаете, как поступить?

Ответы [ 5 ]

2 голосов
/ 20 декабря 2010

Если бы у вас была другая таблица с именем user type, которая выглядела бы так

UserType (typeid, description) 
US  USER 
AD  ADMIN 
MO  MODERATOR

, это было бы тривиально

 SELECT users.id, users.username, UserType.description as type
 FROM 
    USERS 
    INNER JOIN UserType
    ON USERS.Type = UserType.TypeID;

, вы также можете использовать функцию VBA или вложенную IIF

Вы также можете изменить свой Look Control Display Control на поле со списком и установить тип источника строки в список значений

2 голосов
/ 20 декабря 2010

Конечно! Попробуйте что-нибудь в этом духе: выберите [id], [username], iif ([type] = "US", "User", iif ([type] = "MO", "Moderator", iif ([type] = "AD", "Admin", "Unknown Type" ) )

(вот ссылка на функцию IIf )

Однако, учитывая все обстоятельства, вы можете нормализовать ваши данные с помощью справочной таблицы. Так, например, создайте вторую таблицу с именем «UserType» с двумя столбцами: [Code] и [Name]. Затем заполните его тремя записями: "США", "Пользователь" "МО", "Модератор" "AD", "Admin"

Затем в конструкторе запросов включите обе таблицы и соедините их, перетащив столбец «тип» из исходной таблицы в столбец «[Код]» таблицы [UserType]. Затем выберите столбцы [id] и [username] из первой таблицы и столбец [name] из таблицы поиска. Таким образом, если вам нужно добавить новые типы пользователей, вам не нужно беспокоиться о возврате и изменении всех ваших запросов.

1 голос
/ 20 декабря 2010

Вы можете создать таблицу для отображений США в USER, MO в MODERATOR и т. Д. И использовать ее в соединении.
Намного проще поддерживать, расширять (то есть на разных языках), чем жесткое кодирование, с недостаткомнужно поддерживать ваш картографический стол.

1 голос
/ 20 декабря 2010

Sql Server имеет конструкцию под названием Случай, когда , но он недоступен в MS Access.

Вот обходной путь

0 голосов
/ 21 декабря 2010

Я согласен, что у вас должна быть таблица для этого - все остальное граничит с хранением данных в ваших операторах SQL.

Для полноты позвольте мне упомянуть Switch () и Choose ().Первый принимает произвольное количество пар значений, второй - индекс и список значений.Первый работает для строк или чисел, как и в случае CASE WHEN, тогда как Choose () работает только с числами.

Оба имеют ограниченную полезность, поскольку их использование сводится к хранению таблицы поиска в вашем SQL, но этополезно знать об этих вещах в тех случаях, когда просто невозможно добавить таблицу поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...