使用其他查询结果复制查询结果

时间:2012-07-03 21:41:22

标签: sql sql-server

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

启动数据表

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人员可以帮助我。我对回复感到有点困惑

1 个答案:

答案 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