【问题标题】:Query only pulling in output from one column instead of all columns查询仅从一列而不是所有列中提取输出
【发布时间】:2018-01-11 11:50:00
【问题描述】:

实际上,我首先尝试在 excel 中使用一堆嵌套的 vlookup 执行此操作并遇到相同的错误,因此我尝试在 access 中执行此操作,以为我会解决问题,但我遇到了完全相同的问题。

我要做的就是通过内连接连接两个表,其中一个表中的 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

因此它只在第一列加入,不知道为什么?这是我在 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))))))));

【问题讨论】:

  • 我认为你需要UNPIVOT你的Table2,然后加入结果。

标签: sql ms-access ms-access-2016


【解决方案1】:
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

【讨论】:

  • 这根本行不通。您有 4 个别名 - t2、t3、t4、t5 - 它们都不是 table2。 select 子句将无法找到 table2.search
【解决方案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, ...

【讨论】:

  • 我刚刚尝试了您正在做的事情,但仍然有同样的问题,我是否遗漏了什么:SELECT DISTINCT Product.Category, Analytics.Unique FROM Product LEFT JOIN Analytics ON Analytics.Search = IIF(Product.类别不为空, Product.Category, IIF(Product.Field4 不为空, Product.Field4, IIF(Product.Field5 不为空, Product.Field5)));
  • 你确定你的字段真的是 NULL 而不仅仅是空字符串吗?
  • 是的,我认为这可能是个问题,如果它们是空字符串我该怎么办?
  • 你可以同时检查:IIF(Product.Category Is Not Null and Product.Category <> ""
  • 谢谢!我得到了这个工作,但现在我发现我需要更新我在这个作业中必须做的事情,我无法让更新工作,所以我现在将创建一个新问题,也参考这个问题。
猜你喜欢
  • 1970-01-01
  • 2020-10-08
  • 2021-03-20
  • 2016-07-03
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多