mysql - sql - 查找所有不需要红色部分的作业
问题描述
我有一个包含最终产品的表格“工作”和一个包含最终产品组成的各个部分的表格“零件”。第三个表“supp_part_job”将作业和部件链接在一起(因为它们处于:n 关系)。我想找到所有不包含红色部分的最终产品(='job')。
相关表格:
如果不存在 `part` 则创建表 ( `PARTNO` varchar(2) NOT NULL DEFAULT '', `PARTNAME` varchar(10) 默认为 NULL, `COLOR` varchar(10) 默认为空, `WEIGHT` int(5) 默认为空, `CITY` varchar(20) 默认为空, 主键(`PARTNO`) ) 如果不存在`job`,则创建表( `JOBNO` varchar(2) NOT NULL DEFAULT '', `JOBNAME` varchar(20) 默认为空, `CITY` varchar(20) 默认为空, 主键(`JOBNO`) ) 如果不存在“supp_part_job”,则创建表( `SUPPNO` varchar(2) NOT NULL DEFAULT '', `PARTNO` varchar(2) NOT NULL DEFAULT '', `JOBNO` varchar(2) NOT NULL DEFAULT '', `QUANTITY` int(5) 默认为空, 主键(`SUPPNO`,`PARTNO`,`JOBNO`), KEY `SUPP_PART_JOB_JOB_FK1`(`JOBNO`), KEY `SUPP_PART_JOB_PART_FK1`(`PARTNO`) )
这是如何完成的,这可以作为子查询和连接来完成吗?
我努力了:
选择不同的jobno 来自 supp_part_job partno 在哪里 (从颜色!='红色'的部分中选择partno);
这不起作用,因为它 - 如果我理解正确的话 - 返回包含任何非红色部分的所有作业。
解决方案
下面的子查询会找到您不想要的所有工作。外部查询找到您想要的。
select distinct jobno
from job
where jobno not in (
select jobno
from supp_part_job pj
join part p on p.partno = pj.partno
where color = 'red'
)
推荐阅读
- odoo - 获取合作伙伴(包括其子代)发票
- python - 使用python我可以平行复制一行x,y,z点,使x和z保持不变,y增加指定的间距吗?
- java - 订阅远程 rospy 发布者
- javascript - npm run build 不会生成 dist 文件
- azure - 我们已申请 Microsoft Non For Profit 计划并获得积分。如何将积分应用于 Azure?
- yolo - 如何解决谷歌一键登录中的“无可用凭据”问题?
- microsoft-graph-api - 如何为 Market Place 中发布的 Microsoft Teams App 集成 Microsoft Graph API?
- devops - 操作系统从rhel6升级到rhel7.7后如何升级icinga2库?
- python - 如何通过传递数据框列从另一个数据框列中搜索索引
- ios - appDelegate 中的委托功能不会更改导航栏颜色