这似乎应该比它更容易。
我正在尝试在Access中将两个表连接在一起。他们加入了“产品”领域。一个是包含产品子集费率的参考表,另一个是所有产品的销售数据。
问题是销售产品可以在产品中添加两个字符的前导名称。例如,产品可以作为T2202或U-T2202出售。我需要从参考表中选择这些产品的变体,但我还需要过滤掉不相关的产品。
我目前的尝试根本没有奏效;他们要么留下太多,要么取出太少。 尝试1(注意这些是精简的例子,因为还有许多其他不相关的条件)
SELECT *
FROM table1 LEFT JOIN table2 on table1.product LIKE "*" & table2.product
尝试2
SELECT *
FROM table1 LEFT JOIN table2 ON table1.product = table2.product
WHERE table1.product LIKE "*" & table2.product
或者,我可以将数据的副本添加到引用表中并添加前导字符,但这不是很理想。
提前谢谢你。
答案 0 :(得分:0)
SELECT *
FROM table1 LEFT JOIN table2 ON table1.product = table2.product
OR table1.product = CONCAT('U-', table2.product)
如果您有前缀列表,则可以添加更多OR语句
答案 1 :(得分:0)
我原本希望你的解决方案有效,但我不熟悉Access,也许还有一些额外的先决条件,如引号或类似的东西。
您可以尝试这样做:
SELECT *
FROM table1
LEFT JOIN table2
on table1.product = right(table2.product, len(table1.product))
这应该使table1.product
与table2.product
的子字符串匹配,其中所有右手字符的长度都为table1.product
。
当然,更好的解决方案(尽管此时可能对您没有帮助)是清理输入并具有数据库强制的参照完整性。这样你就不会有这个问题。