基于单个表加入2个表

时间:2010-11-29 09:03:29

标签: sql mysql

我似乎无法获得我需要的连接/查询!

假设我有3张桌子(为这篇文章修剪过......)

user_courses
(int) user_id
(int) course_id

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

courses
(int) course_id
(txt) course_desc

我要做的是选择选择具有特定课程的特定课程的所有用户(course_id)

类似......

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"

...但工作就像我想要它:) 我可以接近,但会有额外的用户没有正确的访问类型。

3 个答案:

答案 0 :(得分:1)

使用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"

答案 1 :(得分:0)

也许:

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

干杯

答案 2 :(得分:0)

尝试

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

不确定您的“访问”字段是否为空?