Getting Started with Adobe After Effects - Part 6: Motion Blur
Ask
Ask questions, discuss or help others by answering
Related Posts · View All
SQL Server 141
TSQL 75
SSRS 70
SSIS 66
XML 54

Top Categories · View All
SQL Server 141
TSQL 75
SSRS 70
SSIS 66
XML 54

Query Returning Rows Even Though Using 'NOT IN'

Aug 9 2010 12:00AM by RayB   

Hi All:

I'm using the following query and it appears to be returning rows even though I have specified to not include them using the NOT IN statement. Any ideas would be greatly appreciated!

DECLARE @BBCourse AS VARCHAR (30);

SET @BBCourse = 'PLACEMENT';

SELECT   @BBCourse AS CourseID,
         SYUSER.USERNAME,
         STBIOS.DATE_RECORD_CHGE
FROM     SYUSER
         INNER JOIN
         STBIOS
         ON STBIOS.ID_NUMBER = SYUSER.ID_NUMBER
         INNER JOIN
         STMAIL
         ON STMAIL.ID_NUMBER = SYUSER.ID_NUMBER
         INNER JOIN
         ADMAST
         ON ADMAST.ID_NUMBER = SYUSER.ID_NUMBER
         INNER JOIN
         (SELECT DISTINCT ID_NUMBER
          FROM   RGENRL
                 INNER JOIN
                 RGCRSE
                 ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER
                    AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
                    AND (RGCRSE.SITE_NUMBER = '2'
                         OR RGCRSE.SITE_NUMBER = '31'
                         OR RGCRSE.SITE_NUMBER = '49'
                         OR RGCRSE.SITE_NUMBER = '70')) AS RGENRL
         ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER
         LEFT OUTER JOIN
         (SELECT DISTINCT ID_NUMBER
          FROM   RGENRL
                 INNER JOIN
                 RGCRSE
                 ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER
                    AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
                    AND RGCRSE.COURSE_NUMBER NOT IN ('EN101', 'EN102', 'ENP001', 'ENP101''MA105', 'MA109', 'MA106', 'MA107', 'MAP003', 'MAP106', 'MAP107')) AS C
         ON C.ID_NUMBER = SYUSER.ID_NUMBER
WHERE    C.ID_NUMBER IS NOT NULL
         AND STBIOS.DATE_RECORD_CHGE >= 20100506
         AND STMAIL.USAGE_PREFERRED = 'X'
ORDER BY dbo.SYUSER.USERNAME;

Submitted under: Microsoft SQL Server · TSQL ·  ·  · 


RayB
248 · 1% · 178

12 Replies

  • See what happends when you try this

    DECLARE @BBCourse varchar(30)
    SET @BBCourse = 'PLACEMENT'
    
    SELECT @BBCourse AS CourseID, SYUSER.USERNAME, STBIOS.DATE_RECORD_CHGE
    
    FROM SYUSER INNER JOIN STBIOS ON STBIOS.ID_NUMBER = SYUSER.ID_NUMBER
    INNER JOIN STMAIL ON STMAIL.ID_NUMBER = SYUSER.ID_NUMBER
    INNER JOIN ADMAST ON ADMAST.ID_NUMBER = SYUSER.ID_NUMBER
    INNER JOIN ( SELECT DISTINCT ID_NUMBER FROM RGENRL INNER JOIN RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER AND (RGCRSE.SITE_NUMBER = '2' OR RGCRSE.SITE_NUMBER = '31' OR RGCRSE.SITE_NUMBER = '49' OR RGCRSE.SITE_NUMBER = '70'))
    RGENRL ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER
    LEFT JOIN ( SELECT DISTINCT ID_NUMBER FROM RGENRL INNER JOIN RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
    ) C ON C.ID_NUMBER = SYUSER.ID_NUMBER
    
    WHERE 
    C.ID_NUMBER IS NOT NULL
    AND STBIOS.DATE_RECORD_CHGE >=20100506
    AND STMAIL.USAGE_PREFERRED = 'X'
    AND RGCRSE.COURSE_NUMBER NOT IN ('EN101','EN102','ENP001','ENP101''MA105','MA109', 'MA106','MA107','MAP003','MAP106','MAP107')
    
    ORDER BY dbo.SYUSER.USERNAME
    
    commented on Aug 10 2010 5:09AM
    Madhivanan
    3 · 39% · 12429
  • Thanks, but unfortunately this isn’t working either. This is returning the names of people even though they took these classes. I think it is because they took other classes.

     

    What I am trying to accomplish is to only show the names of people that have never taken one of the classes I have listed. If they ever have taken this class, then I don’t want to see their name in the list.

    commented on Aug 12 2010 10:05AM
    RayB
    248 · 1% · 178
  • Do you have NULLS in RGCRSE.COURSE_NUMBER?

    commented on Aug 12 2010 1:52PM
    Leonid Koyfman
    50 · 4% · 1183
  • No, there shouldn't be any NULLS.

    commented on Aug 12 2010 2:03PM
    RayB
    248 · 1% · 178
  • Please try the following: 

    DECLARE @BBCourse varchar(30)
    SET @BBCourse = 'PLACEMENT'

    SELECT @BBCourse AS CourseID, SYUSER.USERNAME, STBIOS.DATE_RECORD_CHGE
    FROM
     SYUSER INNER JOIN
     STBIOS ON STBIOS.ID_NUMBER = SYUSER.ID_NUMBER INNER JOIN
     STMAIL ON STMAIL.ID_NUMBER = SYUSER.ID_NUMBER INNER JOIN
     ADMAST ON ADMAST.ID_NUMBER = SYUSER.ID_NUMBER INNER JOIN
     (
      SELECT DISTINCT ID_NUMBER
      FROM
       RGENRL INNER JOIN
       RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER
       AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
       AND (RGCRSE.SITE_NUMBER IN( '2' ,'31' ,'49' , '70')
     )RGENRL ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER LEFT JOIN
    WHERE
    NOT EXISTS(
     SELECT 1
     FROM
      RGENRL INNER JOIN
      RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER
      AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
      AND RGCRSE.COURSE_NUMBER IN ('EN101','EN102','ENP001','ENP101''MA105','MA109', 'MA106','MA107','MAP003','MAP106','MAP107')
     WHERE RGENRL.ID_NUMBER = SYUSER.ID_NUMBER
    )
    AND STBIOS.DATE_RECORD_CHGE >=20100506
    AND STMAIL.USAGE_PREFERRED = 'X'
    ORDER BY dbo.SYUSER.USERNAME

    
    
    
    

    commented on Aug 13 2010 5:37PM
    Leonid Koyfman
    50 · 4% · 1183
  • I get the following error with that query:

     

    Server: Msg 102, Level 15, State 1, Line 16
    Incorrect syntax near 'RGENRL'.
    Server: Msg 156, Level 15, State 1, Line 27
    Incorrect syntax near the keyword 'AND'.

    commented on Aug 16 2010 5:27PM
    RayB
    248 · 1% · 178
  • Replace line

    AND (RGCRSE.SITE_NUMBER IN( '2' ,'31' ,'49' , '70')

    with

    AND RGCRSE.SITE_NUMBER IN( '2' ,'31' ,'49' , '70')

    commented on Aug 16 2010 5:32PM
    Leonid Koyfman
    50 · 4% · 1183
  • Still getting this error:

    Server: Msg 156, Level 15, State 1, Line 17
    Incorrect syntax near the keyword 'WHERE'.
    Server: Msg 156, Level 15, State 1, Line 27
    Incorrect syntax near the keyword 'AND'.

    commented on Aug 16 2010 6:01PM
    RayB
    248 · 1% · 178
  • replace line

    )RGENRL ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER LEFT JOIN

    with

    )RGENRL ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER

    Sorry,it's dificult to fix without testing.

    commented on Aug 16 2010 6:07PM
    Leonid Koyfman
    50 · 4% · 1183
  • Thanks for the assistance Leonid!

    Something is still not right though. This is what I have now:

    DECLARE @BBCourse varchar(30)
    SET @BBCourse = 'PLACEMENT'

    SELECT @BBCourse AS CourseID, STBIOS.LAST_NAME, STBIOS.FIRST_NAME, SYUSER.USERNAME, STBIOS.INITIAL_ENROLL_SEM

    FROM SYUSER INNER JOIN STBIOS ON STBIOS.ID_NUMBER = SYUSER.ID_NUMBER
    INNER JOIN STMAIL ON STMAIL.ID_NUMBER = SYUSER.ID_NUMBER
    INNER JOIN ADMAST ON ADMAST.ID_NUMBER = SYUSER.ID_NUMBER
    INNER JOIN ( SELECT DISTINCT ID_NUMBER FROM RGENRL INNER JOIN RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER AND (RGCRSE.SITE_NUMBER = '2' OR RGCRSE.SITE_NUMBER = '31' OR RGCRSE.SITE_NUMBER = '49' OR RGCRSE.SITE_NUMBER = '70'))
    RGENRL ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER
    LEFT JOIN ( SELECT DISTINCT ID_NUMBER FROM RGENRL INNER JOIN RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
    AND
    RGCRSE.COURSE_NUMBER NOT IN ('EN101','EN102','ENP001','ENP101''MA105','MA109', 'MA106','MA107','MAP003','MAP106','MAP107')
    ) C ON C.ID_NUMBER = SYUSER.ID_NUMBER

    WHERE
    C.ID_NUMBER IS NOT NULL
    AND STBIOS.INITIAL_ENROLL_SEM >= '201000'
    AND STMAIL.USAGE_PREFERRED = 'X'

    ORDER BY dbo.SYUSER.USERNAME

     

    This returned 509 records. I spot checked some of them and it appears that some of the students did take one of the courses in RGCRSE.COURSE_NUMBER. I don't understand how they are showing up if I have NOT IN as a criteria?

    Thanks,

    Ray

    commented on Aug 30 2010 5:12PM
    RayB
    248 · 1% · 178
  • Ray,

    Have you tried version with NOT EXISTS I suggested before?

    commented on Aug 30 2010 6:26PM
    Leonid Koyfman
    50 · 4% · 1183
  • Hi Leonid:

     

    My query does contain the NOT EXISTS.

     

    --Use this one!
    DECLARE @BBCourse varchar(30)
    SET @BBCourse = 'PLACEMENT'

    SELECT @BBCourse AS CourseID, STBIOS.LAST_NAME, STBIOS.FIRST_NAME, SYUSER.USERNAME
    FROM
     SYUSER INNER JOIN
     STBIOS ON STBIOS.ID_NUMBER = SYUSER.ID_NUMBER INNER JOIN
     STMAIL ON STMAIL.ID_NUMBER = SYUSER.ID_NUMBER INNER JOIN
     ADMAST ON ADMAST.ID_NUMBER = SYUSER.ID_NUMBER INNER JOIN
     (
      SELECT DISTINCT ID_NUMBER
      FROM
       RGENRL INNER JOIN
       RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER
       AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
       AND RGCRSE.SITE_NUMBER IN( '2' ,'31' ,'49' , '70')
     )RGENRL ON RGENRL.ID_NUMBER = SYUSER.ID_NUMBER
    WHERE
    NOT EXISTS(
     SELECT 1
     FROM
      RGENRL INNER JOIN
      RGCRSE ON RGENRL.CURRENT_SEMESTER = RGCRSE.CURRENT_SEMESTER
      AND RGENRL.COURSE_NUMBER = RGCRSE.COURSE_NUMBER
      AND
      RGCRSE.COURSE_NUMBER IN ('EN101','EN102','ENP001','ENP101','MA105','MA109', 'MA106','MA107','MAP003','MAP106','MAP107')
     WHERE RGENRL.ID_NUMBER = SYUSER.ID_NUMBER
    )
    AND (STBIOS.INITIAL_ENROLL_SEM >= '201000' OR STBIOS.INITIAL_ENROLL_SEM = '0')
    AND STMAIL.USAGE_PREFERRED = 'X'

    --ORDER BY dbo.SYUSER.USERNAME
    ORDER BY dbo.STBIOS.LAST_NAME

     

     

    The only problem I am having now is that if a student took one course (i.e. EN101), but did not take a MA course (i.e. MA105), then they are not showing up in the list.

    I need to return the students that have only taken an EN course but not a MA course or they have taken an MA course and not an EN course.

    Getting very close!

    Thanks,

    Ray

    commented on Sep 1 2010 6:36PM
    RayB
    248 · 1% · 178

Your Reply


Sign Up or Login to post a comment.

    Copyright © Rivera Informatic Private Ltd Contact us      Privacy Policy      Terms of use      Report Abuse      Advertising      [ZULU1097]