带有子查询或连接的SQL查询

时间:2012-09-04 22:51:30

标签: sql join subquery

我需要一些关于如何编写查询的指导。

有以下表格:

tblWorkGroupProgramme

  1. WorkGroupID
  2. 计划ID
  3. tblWorkGroup

    1. WorkGroupID
    2. 工作组名
    3. tblUser

      1. 用户ID
      2. WorkgroupID
      3. tblUserProgramme

        1. 用户ID
        2. ProgrammeID
        3. 要求是找到其工作组名称不像'%Insight%'但ProgrammeID等于59的所有用户ID ProgrammeID 59必须仅分配给那些将其工作组作为'%Insight%'

          的用户

          一直在尝试所有可能的连接和子查询,但无法得到它。所以,任何帮助,朝着正确的方向都会有很大的用处

2 个答案:

答案 0 :(得分:1)

在这里试试这个。

SELECT      a.UserID
FROM        tblUser a
                INNER JOIN tblWorkGroupProgramme b
                    ON a.WorkgroupID = b.WorkGroupID
                INNER JOIN tblUserProgramme c
                    ON c.ProgrammeID = b.ProgrammeID
                INNER JOIN tblWorkGroup d
                    ON b.WorkGroupID = d.WorkGroupID
WHERE       NOT (d.WorkGroupName LIKE '%Insight%') AND
            c.ProgrammeID = 59

答案 1 :(得分:0)

这是我提出的答案:

select a.UserID, c.WorkGroupName
from dbo.tblUserProgramme a 
where a.ProgrammeID = 59 AND 
a.UserID  IN (SELECT UserID  FROM tblUser a WHERE a.WorkGroupID IN
(SELECT WorkGroupID FROM tblWorkGroup
WHERE WorkGroupName like '%Insight%')