查询仅从一列而不是所有列中提取输出
Query only pulling in output from one column instead of all columns
实际上,我首先尝试在 excel 中使用一堆嵌套的 vlookup 执行此操作,但遇到了相同的错误,因此我尝试在访问中执行此操作,以为我会解决问题,但我遇到了完全相同的问题。
我想做的就是通过内部连接将两个 table 连接起来,在一个 table 中有 1 列,在另一个 table 中有许多列之一(并且我希望输出(导致我的问题的那个)是一个特定的列。这是数据的一小部分样本以及我在查询后尝试获取的内容。
Table 1:
Search unique
gloves 5000
beaker 3000
tea 1000
timer 2000
Table 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))))))));
我相信你的表达并没有在测试你认为他们在测试的东西。部分表达式
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, ...
select table2.search, table1.unique
from table1 t
inner join table2 t2 on t2.name = t.search
inner join table2 t3 on t3.field1 = t.search
inner join table2 t4 on t4.field2 = t.search
inner join table2 t5 on t5.field3 = t.search
实际上,我首先尝试在 excel 中使用一堆嵌套的 vlookup 执行此操作,但遇到了相同的错误,因此我尝试在访问中执行此操作,以为我会解决问题,但我遇到了完全相同的问题。
我想做的就是通过内部连接将两个 table 连接起来,在一个 table 中有 1 列,在另一个 table 中有许多列之一(并且我希望输出(导致我的问题的那个)是一个特定的列。这是数据的一小部分样本以及我在查询后尝试获取的内容。
Table 1:
Search unique
gloves 5000
beaker 3000
tea 1000
timer 2000
Table 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))))))));
我相信你的表达并没有在测试你认为他们在测试的东西。部分表达式
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, ...
select table2.search, table1.unique
from table1 t
inner join table2 t2 on t2.name = t.search
inner join table2 t3 on t3.field1 = t.search
inner join table2 t4 on t4.field2 = t.search
inner join table2 t5 on t5.field3 = t.search