MS ACCESS 2003 (формат файла 2000) SQL-запрос - PullRequest
1 голос
/ 04 октября 2011

у меня есть таблица с полями: [VARIABLE_CODE], [VARIABLE_NAME], [CAS_NO], [USER_VAR_GROUP_NAME], и что я хочу сделать с этим тальбом, это либо использовать запрос на добавление, взять записи из таблицы и поместитьих в другую таблицу с дополнительным полем [INDICATOR_NAME].[INDICATOR_NAME] варьируется в зависимости от того, что указано в [VARIABLE_NAME].Пример: Имя переменной AluminiumDissovled ---> Алюминий D Имя индикатора.

Но единственный способ, которым я могу думать об этом, - это иметь много запросов на добавление.по одному на каждое условие, на каждое имя индикатора.и это было бы очень много запросов, чтобы написать.Есть ли в любом случае запрос на добавление, который охватывает и будет выполнять все показатели / условия индикатора?

ИЛИ

, добавьте дополнительное поле [INDICATOR_NAME] и выполните запрос на обновление, аналогичный приведенному ниже.[INDICATOR_NAME] будет добавлено в соответствии с тем, что находится в поле [VARIABLE_NAME].Проблема в том, что у меня есть десять различных условий ниже.но на самом деле у меня есть около ста.от AZ.Тем не менее, существует ограничение на количество IFF, которое вы можете иметь в запросах.
Есть ли в любом случае столько условий в одном запросе?

UPDATE QRY_Variables_A SET INDICATOR_NAME = 
IIf([VARIABLE_NAME]='ALUMINUM DISSOLVED (AL)' OR [VARIABLE_NAME]='ALUMINUM_27 DISSOLVED -       AL','Aluminum D',
IIf([VARIABLE_NAME]='ALUMINUM TOTAL' OR [VARIABLE_NAME]='ALUMINUM TOTAL RECOVERABLE' OR         [VARIABLE_NAME]='ALUMINUM_27 TOTAL RECOVERABLE - AL','Aluminum T',
IIf([VARIABLE_NAME]='ANTIMONY DISSOLVED (SB)' OR [VARIABLE_NAME]='ANTIMONY_121 DISSOLVED - SB','Antimony B',
IIf([VARIABLE_NAME]='ANTIMONY TOTAL' OR [VARIABLE_NAME]='ANTIMONY TOTAL RECOVERABLE' OR [VARIABLE_NAME]='ANTIMONY_121 TOTAL RECOVERABLE - SB','Antimony T',
IIf([VARIABLE_NAME]='ARSENIC DISSOLVED' OR [VARIABLE_NAME]='ARSENIC_75 DISSOLVED - AS','Arsenic D',
IIf([VARIABLE_NAME]='ARSENIC TOTAL' OR [VARIABLE_NAME]='ARSENIC TOTAL RECOVERABLE' OR [VARIABLE_NAME]='ARSENIC_75 TOTAL RECOVERABLE - AS','Arsenic T',
IIf([VARIABLE_NAME]='BARIUM DISSOLVED' OR [VARIABLE_NAME]='BARIUM_137 DISSOLVED - BA','Barium D',
IIf([VARIABLE_NAME]='BARIUM TOTAL' OR [VARIABLE_NAME]='BARIUM TOTAL RECOVERABLE' OR [VARIABLE_NAME]='BARIUM_137 TOTAL RECOVERABLE - BA','Barium T',
IIf([VARIABLE_NAME]='BERYLLIUM DISSOLVED' OR [VARIABLE_NAME]='BERYLLIUM_9 DISSOLVED - BE','Beryllium D',
IIf([VARIABLE_NAME]='BERYLLIUM TOTAL' OR [VARIABLE_NAME]='BERYLLIUM TOTAL RECOVERABLE' OR [VARIABLE_NAME]='BERYLLIUM_9 TOTAL RECOVERABLE - BE','Beryllium T',

))))))))));

Спасибо всем за ваши советы, ответы, время, комментарии.

1 Ответ

2 голосов
/ 04 октября 2011

Возможно, вы захотите создать еще одну таблицу со списком:

Variable_Name                       Indicator_Name
ALUMINUM DISSOLVED (AL)             Aluminum D
ALUMINUM_27 DISSOLVED -       AL    Aluminum D

И так далее.Затем вы можете присоединить эту таблицу к вашей основной таблице, чтобы получить имя индикатора:

SELECT MyTable.Variable_Name, NewTable.Indicator_Name 
FROM MyTable 
INNER JOIN NewTable
ON MyTable.Variable_Name = NewTable.Variable_Name

Возможно, вам даже не придется обновлять столбец, но вы можете использовать такую ​​настройку, например:

UPDATE MyTable 
INNER JOIN NewTable
On MyTable.Variable_Name = NewTable.Variable_Name
SET MyTable.Indicator_Name = NewTable.Indicator_name
...