[英]SQL Statement - Excluding certain data
我仍处于SQL语句的学习阶段,我希望有人可以提供帮助。
我有一个多对多的数据库基础关系。
表部门可以有多个与之关联的作业,而作业可以与多个部门相关联。 所以我有这种基本的关系类型。
Job.ID (one-to-many) Jobs.JobID
Jobs.DepartmentID (many-to-one) Department.ID
我要做的是获取一个尚未与部门关联的工作列表。
tbl=Job
ID Job Active
1 10-3242 Yes
2 12-3902 Yes
3 12-3898 Yes
tbl=Jobs
ID DepartmentID JobID
1 3 1
2 3 2
tbl=Department
ID Department
1 Administration
2 Sales
3 Production
查询:
string sql = "SELECT Job FROM (Job " +
"INNER JOIN Jobs ON Job.ID = Jobs.JobID) " +
"INNER JOIN Department ON Jobs.DepartmentID = Department.ID " +
"WHERE Department.Department <> 'Production'";
我期待返回工作代码12-3898
,但显然我忘记了什么。
任何援助都会很棒。 干杯。
select job
from job
where id not in (select jobId
from jobs)
不幸的是,我不在一个可以测试结果的环境中。 但是,这背后的基本思考过程是,只要您想要从没有来自另一个表的匹配行的表中返回行,就必须执行外部联接。 目的是要显示作业表中的所有行(即左外连接)。 但是,您希望过滤departmentID为NULL的位置,因为NULL departmentID将是作业表中的行,而department表中没有匹配的departmentID。 希望有所帮助。
SELECT j.id, j.job, j.active, jd.departmentid
FROM job j
LEFT OUTER JOIN jobs jd ON j.id = jd.jobid
LEFT OUTER JOIN department d ON d.id = jd.departmentid
WHERE jd.departmentid IS NULL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.