繁体   English   中英

MS Access多值字段查询

[英]MS Access multivalued field query

MS Access数据库2010,将创建以下表格:

BazaNalaza栏:

  • ID-自动编号
  • ReportID-编号
  • ResponsibleUnit-数字,多值字段,链接到ResponsibleUnits表

ResponsibleUnits:

  • ID-自动编号
  • 名称-文字
  • CompanyLine-文字

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM