sql - MS Access VBA 选择查询

标签 sql database vba ms-access

所以首先对不起我的英语,我的母语是德语。

我有一个带有几个表的 ACCESS 数据库,数据库中充满了治疗植物,并且有一个名为“问题”的表,它看起来像这样:

列:ID -- 姓名 -- 头痛 -- 疼痛 -- 呕吐 -- 等等....

头痛等症状的列是 bool 值 - True 或 False。

现在我想做一个查询,要求用户(使用表单或文本输入的列表框)告诉他的指示,然后应该有一个物质/植物列表,其中值因为指示 (ColumnName) 为真。

我认为这是在表中搜索列的参数。

最佳答案

我会查看您的数据库的设计。如果另一个问题变得明显,那么为每个问题创建一个包含单独列的表格将是一件非常令人头疼的事情。

我可能会为此使用四个表:

  • 用户:用户 ID(自动编号、PK)、用户名(文本)
    enter image description here
  • Plants:PlantID(AutoNum,PK),PlantName(文本)
    enter image description here
  • 问题列表:问题 ID(自动编号、PK)、问题描述(文本)
    enter image description here
  • User_Issues:UserID(Num,PK),PlantID(Num,PK),IssueID(Num,PK em>), HasIssue ( bool 值)
    enter image description here

User_Issues 表有一个复合键,由其他表中的每个标识符组成 - 这将确保用户不会对一个工厂多次遇到相同的问题。

创建新用户时,将运行一个查询来更新 User_Issues 表:

INSERT INTO User_Issue(PlantID, IssueID, UserID)
SELECT      PlantID, IssueID, UserID
FROM        Plants, IssueList, Users
WHERE       UserName = "Darren"

这将为每个用户从工厂和问题创建一个笛卡尔积。因此,例如,如果您有两个工厂和三个问题,您将创建 2x3 记录 - 这两个工厂可能有 6 个问题。
enter image description here

此 SQL 将允许您分配问题:

SELECT        UserName
            , PlantName
            , IssueDesc
            , HasIssue
FROM        ((
             User_Issue INNER JOIN Users ON User_Issue.UserID = Users.UserID)
                        INNER JOIN Plants ON User_Issue.PlantID = Plants.PlantID)
                        INNER JOIN IssueList ON User_Issue.IssueID = IssueList.IssueID
ORDER BY    PlantName, IssueDesc

enter image description here

要查看问题,您只需将 WHERE HasIssue 添加到上述 SQL。

SELECT        UserName
            , PlantName
            , IssueDesc
            , HasIssue
FROM        ((
             User_Issue INNER JOIN Users ON User_Issue.UserID = Users.UserID)
                        INNER JOIN Plants ON User_Issue.PlantID = Plants.PlantID)
                        INNER JOIN IssueList ON User_Issue.IssueID = IssueList.IssueID
WHERE       HasIssue
ORDER BY    PlantName, IssueDesc

enter image description here

关于sql - MS Access VBA 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44518695/

相关文章:

sql-server - SQL Server Management Studio 说此语句不正确

excel - 将文本插入单元格的背景

database - 哪种数据库设计在这种情况下更有效?

c# - 我的 Access 数据库不更新 (ASP.NET)

sql - 关于计算列的新手 SQL 问题

sql - 仅当 SQL Server 中存在时才选择负值

vba - 如何使数组函数从 vba excel 中的数字创建序列月份?

excel - 如何在 Excel 工作表中填充数据,其中日期位于另一张工作表中给出的一系列日期范围之间?此外,特定的列应该匹配

sql - SQL查询中转义关键字的通用方法是什么?

mysql - SQL中 "UPDATE table SET column1 = value AND column2 value WHERE condition"是什么意思?