[英]Comparing row based on contents to another tables rows in Access SQL
嗨,我正在从事一个项目,由于时间限制,我需要继续在Access中工作,这可能是我所有问题的根源,但也许还是有希望的。
我有一个数据库,其中包含一个表ANSWERS,其中填充有用户“想要”的输入,每行都有多个列,每个列对应于一个不同问题的答案,询问他们是否在乎,不需要或需要什么。
EG:答案:
Bacon | Ham | Sausage
________________________________
1 0 0 2
2 2 1 0
3 0 2 0
4 1 1 1
(0 =无关,1 =想要,2 =需要)
我想将表Answers中的一行与Available表进行比较。
EG:可用:
Bacon | Ham | Sausage
________________________________
1 0 1 0
2 0 0 0
3 1 1 1
4 1 1 0
(0 =不可用,1 =可用)
因此,我想将“答案”与“可用”中的第1行进行比较,因此,因为第1行包含“香肠” = 2,所以我想从“可用”中接收第3行,因为“香肠” = 1。
我很乐意收到整行,或者行ID和匹配的行的“ 1”。
最终,我需要对“答案”中的所有每一行都执行此操作。
任何想法都值得赞赏,我以为使用Intersect可能有效,但是由于在访问中无效。 我也考虑过加入表格,如有必要,我也可以更改数据变量或格式。
非常感谢
编辑:不在意以前是不要。 为清楚起见进行了更改。
试试看: SELECT tblAnswers.UserID, IIf([tblAnswers].[bacon]>0 And [tblMenus].[Bacon]<>0,[MenuID],Null) AS BaconMenu, IIf([tblAnswers].[Ham]>0 And [tblMenus].[Ham]<>0,[MenuID],Null) AS HamMenu, IIf([tblAnswers].[Sausage]>0 And [tblMenus].[Sausage]<>0,[MenuID],Null) AS SausageMenu FROM tblAnswers, tblMenus WHERE (((IIf([tblAnswers].[bacon]>0 And [tblMenus].[Bacon]<>0,[MenuID],Null)) Is Not Null)) OR (((IIf([tblAnswers].[Ham]>0 And [tblMenus].[Ham]<>0,[MenuID],Null)) Is Not Null)) OR (((IIf([tblAnswers].[Sausage]>0 And [tblMenus].[Sausage]<>0,[MenuID],Null)) Is Not Null));
只需将其粘贴到SQL视图中的“查询”窗口中(更改表名和列名以使其与您的名称相匹配),显然您将需要根据实际需要对其进行调整,但是它确实可以满足您对提供的数据的要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.