-1

我有一个查询结果集,其中包含我需要过滤的数据,但是,过滤数据包含在另一个表中,而且该过滤表链接到另一个包含过滤器分组的表。更进一步,分组表包含可能为空的字段,我需要忽略这些字段。我还需要按组表对结果进行分组。关于解决这个问题的最佳方法的任何想法?

起始数据表

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

重申我的需要:我需要输出按组表内容过滤的第一个表的结果,然后考虑到组表中可能的空值以及数据范围,按设置表进行分组。有道理?

实现这一结果的最佳方法是什么?


谢谢你的输入。我有点困惑,为什么我的请求被认为是不完整的并且上面有负分……我提供了包含要过滤的数据的表格示例,然后提供了其他三个包含过滤数据的表格。我什至后来提供了预期的输出。我正在尝试就能够过滤/搜索数据库并使用过滤数据库作为标准将数据过滤到所需输出的方向获得一些帮助。我认为这里有很棒的 SQL 人员可以帮助我。我对回复有点困惑

4

1 回答 1

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 解释您尝试过的内容以及遇到的具体问题。

一般而言,您应该查看常见问题解答并非常认真地遵循其指导方针。这样,stackoverflow 将对您和其他人最有用。https://stackoverflow.com/faq

于 2012-07-03T22:36:08.937 回答