我有一份实习申请,他们可以申请实习。我们有个脚本能自动让实习生有资格。我想找所有没有资格实习的实习生。
数据库如下:
Intern (Id,...)
Application (Id, status, intern_id, internship_id,...)
Internship (Id,...)对于这个状态,我们有“申请”、“合格”、“当前”和“完成”--基本上我需要为没有“合格”状态的应用程序的实习生做一个连接请求,但是我的sql技能非常基本。
编辑
我忘了说,可以有几个实习生申请,一个实习生只能有一个实习资格,但他仍然可以申请另一个实习,所以这是行不通的
SELECT *
FROM Intern i
INNER JOIN Application a ON i.Id = a.intern_id
WHERE a.status <> 'qualified'发布于 2012-06-19 15:43:52
将状态包含在LEFT JOIN中,并对非匹配状态进行筛选,如下所示:
SELECT ....
FROM Intern i
LEFT JOIN
Application a
ON i.Id = a.intern_id
AND a.status = 'qualified'
WHERE a.Id IS NULL显然,替换你的列列表吧!
发布于 2012-06-19 15:43:51
SELECT *
FROM Intern i
WHERE NOT EXISTS
(SELECT *
FROM Intern j
, Application a
WHERE j.id = a.intern_id
AND i.id = j.id
AND a.status = 'qualified')发布于 2012-06-19 15:44:32
SELECT * FROM Intern
WHERE Id IN ( SELECT Intern_id FROM Application WHERE status <> 'qualified' );https://stackoverflow.com/questions/11104561
复制相似问题