[英]MS Access multivalued field query
MS Access数据库2010,将创建以下表格:
BazaNalaza栏:
ResponsibleUnits:
ResponsibleUnits包含以下数据:
ID + Name + CompanyLine
++++++++++++++++++++++++++++++
1 + ItOps + Technology
2 + IdDev + Technology
3 + CRM + Marketing
4 + Legal + ExCo
5 + ItDWH + Technology
以下SQL查询工作正常:
SELECT * FROM BazaNalaza
WHERE BazaNalaza.ResponsibleUnit.Value IN (1,2,5)
但是,以下代码不起作用:
SELECT * FROM BazaNalaza
WHERE BazaNalaza.ResponsibleUnit.Value IN (SELECT ID FROM ResponsibleUnits WHERE CompanyLine = "Technology")
第二个查询仅适用于bazaNalaza.ResponsibleUnit中的值以1、2或5开头的行,而包含(3,5)或(4,5)或(3,4,5)的字段不在结果集中。
任何想法有什么问题吗?
具有多值查找字段的查询可能有点奇怪,因为给定表的上下文有时可以处于“父”级别,有时可以处于“子”级别。 但是,这似乎适合您的情况:
SELECT b.* FROM BazaNalaza b
WHERE
EXISTS (
SELECT ID, ResponsibleUnit.Value FROM BazaNalaza
WHERE
ID=b.ID
AND
ResponsibleUnit.Value IN (
SELECT ID FROM ResponsibleUnits
WHERE CompanyLine = "Technology"
)
)
您实际上不应该具有多值属性。 它违反了第一个范式。
这种格式将不起作用,您可能需要另一个表才能将该列与BazaNalaza表分开。
尝试这个
select disinct * from BazaNalaza inner join ResponsibleUnits on ResponsibleUnits.ID = BazaNalaza.ResponsibleUnit.Value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.