【发布时间】:2017-08-07 18:42:26
【问题描述】:
几天前,我在这里写了一个问题,得到了回答并帮助我解决了我当时认为是我的项目的问题:
Query only pulling in output from one column instead of all columns
这是之前的工作并且没有问题:
SELECT DISTINCT Product.Category, Analytics.Unique, Product.ID,
Product.Family
FROM Analytics INNER JOIN Product ON Analytics.Search = IIF(Product.Category
= Analytics.Search, Product.Category, IIF(Product.Field4 = Analytics.Search,
Product.Field4,));
当时,我只认为我只需要寻找完全匹配,后来我发现我还需要加入部分匹配,其中两个字符串至少有 1 个完整的常用词正在加入。例如,如果我们加入“Beakers”与“Huge Big Beakers”,他们应该加入,因为它们有共同的“Beakers”......
我已经尝试根据我在 stackoverflow 上找到的一些链接修改我之前的查询从另一个问题来解决这个问题,我不断收到语法错误,它并没有真正指出问题出在哪里。这是我的查询(仅适用于 1 列,没有将其复制粘贴到所有列,因为由于某种原因它仍然无法正常工作),我只显示几列,因为它们无论如何都是重复的,并且更容易阅读:
SELECT DISTINCT Product.Category, Analytics.Unique, Product.ID,
Product.Family
FROM Analytics
INNER JOIN Product ON Analytics.Search = IIF((SELECT DISTINCT
Product.Category
FROM Product, Analytics
WHERE ' ' & Product.Category & ' '
Like '* Product.Category *'), Product.Category,
IIF(Product.Field4 = Analytics.Search, Product.Field4,));
我试图添加的这部分有问题,因为它在我遇到的另一个问题之前对完整匹配有效:
Product ON Analytics.Search = IIF((SELECT DISTINCT Product.Category FROM
Product, Analytics WHERE ' ' & Product.Category & ' ' Like '*
Product.Category *'),
【问题讨论】:
-
由于您没有发布之前工作的完整语法,所以当我之前与此进行比较时,我发现您的新查询有更多的更改,而不仅仅是更改您的选择标准。我建议您通过删除简单测试不需要的任何内容来简化语法,然后慢慢添加。
-
好的,我更新了我的查询,以便更清楚地了解我最初所做的事情
-
既然您发布了之前和当前的版本,请注意您在 OLD: FROM Analytics INNER JOIN ... = IIF(Product.Category ... 和 NEW: FROM Analytics INNER JOIN 之间有很大区别... = IIF((SELECT DISTINCT Product.Category
-
好的,我认为差异是微不足道的,因为它只是一遍又一遍地重复相同的事情......但我再次更新它以使它们现在完全一样,对不起,我应该这样做那是第一次
-
这是否意味着它现在可以工作,还是您仍然会收到错误?