我有一个查询结果集,其中包含我需要过滤的数据,但是,过滤数据包含在另一个表中,而且过滤表链接到另一个包含过滤器分组的表。更进一步,分组表包含可能为空的字段,我需要忽略这些字段。我还需要按组表对结果进行分组。关于解决这个问题的最佳方法有什么想法吗?
启动数据表
MYID NAME ADDRESS AGE
1 FRED 123 SECOND ST 12
2 JILL 321 FIRST ST 6
3 JOE 54 THIRD ST 4
过滤表格
--Group: table that is keyed via xref to Set table
GROUP_ID AGEFROM AGETO MYID
1 3 7 NULL
2 NULL NULL 2
--Set: table that is xrefed to group table
SET_ID NAME
5 SET1
6 SET2
--Xref: table connecting Set and Group
SET_ID GROUP_ID
5 1
5 2
6 1
通过使用过滤表作为过滤标准来查询起始数据表的期望输出
SET GROUP NAME AGE ID ADDRESS
5 1 JILL 6 NULL 321 FIRST ST
5 1 JOE 4 NULL 54 THIRD ST
5 2 JILL NULL 2 321 FIRST ST
6 1 JILL 6 NULL 321 FIRST ST
6 1 JOE 4 NULL 54 THIRD ST
重申我的需要: 我需要输出由Group Table内容过滤的第1个表的结果,然后根据set表进行分组,同时考虑组表中可能的空值以及数据范围。有意义吗?
实现这一结果的最佳方法是什么?
谢谢你输入。我有点困惑为什么我的请求被认为是不完整的并且在其上有负面标记...我提供了包含要过滤的数据的表示例,然后是包含过滤数据的其他三个表。我甚至后来提供了预期的输出。我试图获得一些方面的帮助,以便能够过滤/搜索数据库并使用过滤数据库作为过滤数据到所需输出的标准。我认为这里有很棒的SQL人员可以帮助我。我对回复感到有点困惑
答案 0 :(得分:0)
你需要使用一些连接,如下所示:
SELECT SetTbl.SetID, GroupTbl.GROUP_ID, ResultsTbl.Name, ResultsTbl.Age, ResultsTbl.Address, GroupTbl.MYID
FROM ResultsTbl INNER JOIN GroupTbl
ON (ResultsTbl.MYID = GroupTbl.MYID OR ResultsTbl.AGE BETWEEN GroupTbl.AGEFROM AND GroupTbl.AGETO)
INNER JOIN SetTbl
ON GroupTbl.GROUP_ID = SetTbl.GROUP_ID
你的问题不明确,所以我不能肯定这是一个答案。请对使用stackoverflow采取以下建议:
一般而言,您应该仔细阅读常见问题解答并遵循其指南。这样,stackoverflow对您和其他人最有用。 https://stackoverflow.com/faq