2012-09-04 103 views
0

需要關於如何編寫查詢的一些指導。使用子查詢或連接的SQL查詢

有以下表:

tblWorkGroupProgramme

  1. WorkGroupID
  2. 節目ID

tblWorkGroup

  1. WorkGroupID
  2. 工作組名

tblUser

  1. 用戶ID
  2. WorkgroupID

tblUserProgramme

  1. 用戶ID
  2. ProgrammeID

要求是要找到所有這些用戶ID,其工作組名稱不LIKE「%洞察%」,但​​ProgrammeID等於59爲 ProgrammeID 59有隻分配給那些誰擁有自己的工作組爲「%用戶Insight%'

已嘗試使用所有可能的連接和子查詢,但無法獲取它。所以,任何幫助,在正確的方向將是非常有用的

+0

當你試一下,張貼你已經嘗試了什麼! – fancyPants

回答

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%') 
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