MS Access Database 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)不在结果集中。
任何想法有什么不对?
答案 0 :(得分:1)
具有多值查找字段的查询可能有点奇怪,因为给定表的上下文有时可能位于" parent"水平,有时候是在孩子身上"水平。但是,这似乎适用于您的情况:
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"
)
)
答案 1 :(得分:0)
你真的不应该有多值属性。它违反了第一范式。
此格式不起作用,您可能需要另一个表将该列与BazaNalaza表分开。
试试这个
select disinct * from BazaNalaza inner join ResponsibleUnits on ResponsibleUnits.ID = BazaNalaza.ResponsibleUnit.Value