我想创建一个查询,该查询基于引用来自不同表的关键字字段的关键字查找(CONTAINS)来填充一个表中的字段。请参阅下面的示例表:
tbl_Parts
+----+------+-------------+------+
| ID | Comp | Desc | Type |
+----+------+-------------+------+
| 1 | 112 | Brg, Ball | |
| 2 | 245 | Bearing, X | |
| 3 | 364 | Mtg Ring, 1 | |
| 4 | 445 | Pump, 2x3 | |
+----+------+-------------+------+
tbl_Ref
+----+---------+-------+
| ID | Keyword | Type |
+----+---------+-------+
| 1 | Bearing | O |
| 2 | Ring | S |
| 3 | Pump | P |
| 4 | Disc | O |
+----+---------+-------+
具体来说,我想使用tbl_Ref.Type填充tbl_Parts.Type,其中tbl_Parts.Desc包含tbl_Ref.Keyword。
但是,我找不到使用字段作为参考的CONTAIN函数的任何示例。我想查询将类似于以下内容:
SELECT *
FROM (
SELECT tbl_Parts.Comp, tbl_Parts.Desc, tbl_Ref.Type AS tbl_Parts.Type
FROM tbl_Ref, tbl_Parts
WHERE tbl_Parts.Desc CONTAINS tbl_Ref.Keyword
) AS x;
我知道这远非正确,但这是我目前能想到的一切。
在某些情况下,tbl_Parts.Desc包含多个关键字。在这种情况下,我想连接所有类型匹配项。但是,此功能目前尚不优先。
应该注意,我可以在tbl_Parts设计,独立查询或追加查询中的查找查询中执行此操作。
任何有关此的意见或建议都将非常棒,
答案 0 :(得分:0)
CONTAINS
需要使用字符串文字作为第二个参数,因此我怀疑是否有可能。
包含(
{
column_name | (column_list)
| *
| PROPERTY({column_name},'property_name')
}
,“” [,LANGUAGE language_term]
)
您可以改用LIKE
:
SELECT tbl_Parts.Comp, tbl_Parts.Desc, tbl_Ref.Type AS [tbl_Parts_Type]
FROM tbl_Ref
JOIN tbl_Parts
ON tbl_Parts.Desc LIKE '%' + tbl_Ref.Keyword + '%';
在某些情况下,tbl_Parts.Desc包含多个关键字。在这种情况下,我想连接所有类型匹配项。但是,此功能目前尚不优先。
SELECT tbl_parts.ID, tbl_Parts.Comp, tbl_Parts.Desc,
STRING_AGG(tbl_Ref.Type, ',') WITHIN GROUP(ORDER BY tbl_Ref.ID) AS tbl_Parts_Type
FROM tbl_Ref
JOIN tbl_Parts
ON tbl_Parts.Desc LIKE '%' + tbl_Ref.Keyword + '%'
GROUP BY tbl_parts.ID, tbl_Parts.Comp, tbl_Parts.Desc;
答案 1 :(得分:0)
由于您最终打算使用从data <- as.data.frame(matrix(rnorm(60),20,3))
data$veg <- c(rep("Tree (n=2)", 4),rep("Bush (n=4)", 4),rep("Shrubbery (n=6)", 4), rep("Aquatic (n=2)",4),rep("Control (n=7)", 4))
names(data) <- c("A", "B", "C", "veg")
melted <- melt(data)
ggplot(melted, aes(variable, value)) +
geom_point()+
facet_grid(~veg)+
theme(strip.text.x = element_text(size = 14))
查询中获得的值填充tbl_parts.type
字段(大概使用UPDATE
查询),因此您可能需要使用域汇总函数,例如SELECT
来获取适当的值,否则MS Access将抱怨该查询将不可更新。
为此,我提出以下建议:
DLookup
如果update tbl_parts p
set p.type = dlookup("type", "tbl_ref", "'" & p.desc & "' like '*' & keyword & '*'")
包含引号,则当然会被破坏。
示例:
在SQL之上运行后:
在描述与多个关键字匹配的情况下,您需要将多种类型连接到以逗号分隔的字符串中,那么我建议根据{{1 }}表达式,然后使用VBA遍历结果记录集。