2014-01-31 36 views
1

我有三个表:sarcuser,sarcusercommittee,sarcallcourse。我需要建立一个查询,让所有没有委员会的用户(他们在sarcuser委员会没有记录)。这里是我当前的查询:选择用户不包含其他表中的记录sql查询

SELECT  u.firstname + ' ' + u.lastname AS name, u.dateofbirth, u.gender, LEFT(u.note, 200) AS note, c.name AS coursename 
FROM   sarcuser AS u INNER JOIN 
         sarcusercommittee AS uc ON u.id = uc.user_id INNER JOIN 
         sarcallcourse AS c ON c.id = u.courseid 
WHERE  ((SELECT  COUNT(id) AS Expr1 
          FROM   sarcusercommittee 
          WHERE  (user_id = u.id)) = 0) 
ORDER BY name DESC 

我想这个问题是(ON condistion),但没有得到它...任何帮助吗? 注:我使用Visual Studio 2010

回答

1
SELECT   u.firstname + ' ' + u.lastname AS name, u.dateofbirth, u.gender, LEFT(u.note, 200) AS note, c.name AS coursename 
FROM   sarcuser AS u 
INNER JOIN  sarcallcourse AS c 
ON    c.id = u.courseid 
WHERE   u.id NOT IN (
    SELECT  uc.user_id 
    FROM  sarcusercommittee AS uc 
) 
ORDER BY name DESC 

首先你不应该内部连接到sarcusercommittee,如果你不想从中行。 Seconly我会使用NOT IN过滤不在sarcusercommittee中的用户。

+0

我以为...但并不真正知道如何去做...谢谢 –

+0

你可以使用我提供的查询示例 –

相关问题