2010-11-29 9 views
2

Je n'arrive pas à obtenir la jointure/requête dont j'ai besoin!Joindre 2 tables basées sur une seule table

Disons que j'ai 3 tables (parées pour ce poste ...)

user_courses 
(int) user_id 
(int) course_id 

users 
(int) user_id 
(txt) name 
(txt) access 

courses 
(int) course_id 
(txt) course_desc 

Ce que je suis en train de faire est de sélectionner sélectionner tous les utilisateurs avec un certain type d'accès qui suivent un cours spécifique (course_id)

quelque chose comme ...

SELECT * 
FROM user_courses uc 
JOIN users u 
ON uc.user_id = u.user_id 
JOIN courses c 
ON uc.course_id = c.course_id 
WHERE u.access = "foobar" 

... mais travailler comme je veux qu'il :) je peux me rapprocher, mais les utilisateurs devront supplémentaires qui ne sont pas correc t type d'accès.

+0

Quel est le problème? Si certains utilisateurs n'ont pas le type d'accès correct, faites des changements dans db. – hgulyan

Répondre

1

Utilisez inner join.

SELECT * 
    FROM user_courses uc 
    INNER JOIN users u 
    ON uc.user_id = u.user_id 
    LEFT JOIN courses c 
    ON uc.course_id = c.course_id 
    WHERE u.access = "foobar" 
0

peut-être:

select * from users u 
where u.access='foobar' 
    and exists (select 1 from user_courses uc where uc.user_id=u.user_id) 

Vive

0

Essayez

... 
WHERE ISNULL(u.access, '') = 'foobar' 

Je ne sais pas si votre champ 'accès' peut être nul?

Questions connexes