Запрос извлекает вывод только из одного столбца, а не из всех столбцов

На самом деле я впервые попытался сделать это в Excel с кучей вложенных vlookup и столкнулся с той же ошибкой, поэтому я попытался сделать это в доступе, думая, что решу проблему, но получаю точно такую ​​​​же проблему.

Все, что я пытаюсь сделать, это соединить две таблицы с помощью внутреннего соединения с 1 столбцом в одной таблице и одним из многих столбцов в другой таблице (и я хочу, чтобы вывод был (тот, который вызывает мою проблему), чтобы быть одним конкретный столбец. Вот небольшой образец данных и то, что я пытался получить, а затем мой запрос.

Таблица 1:

Search    unique

gloves    5000
beaker    3000
tea       1000
timer     2000

Таблица 2:

Name   Field1   Field 2    Field3 ....
gloves hello    goodbye
Time   timer    clock
hi     tea

когда я делаю внутреннее соединение, я получаю:

gloves 5000

вместо получения:

gloves 5000
tea    1000
timer  2000

Следовательно, он присоединяется к нему только в 1-м столбце, понятия не имею, почему? Вот запрос, который я написал в Access:

SELECT DISTINCT Product.Category, Analytics.Unique
FROM Product INNER JOIN Analytics ON IIF(Analytics.Search = Product.Category 
Is Not Null,Analytics.Search = Product.Category, IIF(Analytics.Search = 
Product.Field4 Is Not Null, Analytics.Search = Product.Field4, 
IIF(Analytics.Search = Product.Field5 Is Not Null, Analytics.Search = 
Product.Field5, IIF(Analytics.Search = Product.Field6 Is Not Null, 
Analytics.Search = Product.Field6, IIF(Analytics.Search = Product.Field7 Is 
Not Null, Analytics.Search = Product.Field7, IIF(Analytics.Search = 
Product.Field8 Is Not Null, Analytics.Search = Product.Field8,  
IIF(Analytics.Search = Product.Field9 Is Not Null, Analytics.Search = 
Product.Field9, IIF(Analytics.Search = Product.Field10 Is Not Null, 
Analytics.Search = Product.Field10))))))));

person bernando_vialli    schedule 03.08.2017    source источник
comment
Я думаю, вам нужно UNPIVOT вашу таблицу 2, а затем присоединиться к результат.   -  person Andre    schedule 04.08.2017


Ответы (2)


Я считаю, что ваши выражения не проверяют то, что вы думаете, они проверяют. Частичное выражение

Analytics.Search = Product.Category Is Not Null

эквивалентно

(Analytics.Search = Product.Category) Is Not Null

Другими словами, проверка того, не является ли логическое значение нулевым. И логические значения никогда не равны нулю.

Вы, вероятно, хотите что-то еще вроде этого:

... ON Analytics.Search = IIF(Product.Category Is Not Null, Product.Category, 
                          IIF(Product.Field4 Is Not Null, Product.Field4, ...
person Ross Presser    schedule 03.08.2017
comment
Я только что попробовал то, что вы делаете, и у меня все еще та же проблема, я что-то упустил: SELECT DISTINCT Product.Category, Analytics.Unique FROM Product LEFT JOIN Analytics ON Analytics.Search = IIF (Product.Category Is Not Null, Product.Category , IIF(Продукт.Поле4 не равно нулю, Продукт.Поле4, IIF(Продукт.Поле5 не равно нулю, Продукт.Поле5))); - person bernando_vialli; 03.08.2017
comment
Вы уверены, что ваши поля действительно NULL, а не просто пустые строки? - person Ross Presser; 03.08.2017
comment
да, я думаю, что это может быть проблемой, что мне делать, если это пустые строки? - person bernando_vialli; 03.08.2017
comment
Вы можете проверить оба: IIF(Product.Category Is Not Null and Product.Category <> "" - person Ross Presser; 04.08.2017
comment
Спасибо! Я заставил это работать, но теперь я обнаружил, что мне нужно обновить то, что я должен делать в этом задании, и я не могу заставить обновление работать, поэтому сейчас я создам новый вопрос, также сославшись на этот. - person bernando_vialli; 07.08.2017
comment
@ Росс Прессер, не могли бы вы проверить мой другой вопрос, мне очень нравится, как вы ответили на этот вопрос, поэтому я думаю, что вы очень хорошо отвечаете на вопросы в последовательной манере, спасибо!: stackoverflow.com/questions/45553712/ - person bernando_vialli; 07.08.2017

person    schedule
comment
Это вообще не сработает. У вас есть 4 псевдонима — t2, t3, t4, t5 — и ни один из них не является table2. Предложение select не сможет найти table2.search - person Ross Presser; 04.08.2017