Skip to content
Advertisement

Sql list unregistered classroom

There is one student. This student is enrolling in classes. What I want is to list the classes where this student is not registered.

My SQL query is like this.

SELECT * FROM class, userClass WHERE class.id <> userClass.class AND userClass.user<>$userid

Where am I going wrong?

Advertisement

Answer

I had to assume your table structure and I hope I got it right. The classic approach would be with LEFT JOIN and IS NULL:

select
    c.*
from
    class c left join userClass uC on c.id = uC.class and uC.user = $userid
where
    uC.class is null

or using NOT IN

select
    *
from
    class
where
    id not in (select class from userClass where user = $userid)

BTW: You should read a bit about database naming conventions – like using plural names for tables (classes, userClasses) and properly identifying keys – if table classes has an id then you should refer to it in related tables by classId, etc.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement