SQL数据库多个表格中,从3个表格中根据条件,提取字段的一个问题

先介绍下表格:有三个表(yuangong:包含字段为“线别”、“工序名”;dingdan:包含字段为“型号”、“状态”、“线别”;gsmx: 包含字段为“工序名”、“型号”)
现说下我要查询的条件:
1。dingdan状态下是“已投产”的所有产品型号
2。在1的提前下这些产品型号可以显示每种产品型号的所有工序名
3。在1和2的前提下,在这些工序名有相对应的操作员工及其线别

我的代码是:select dingdan.chanpinxinghao,gsmx.gxname,dingdan.pingshenhao from dingdan(这个用什么,用inner join可以么) on dingdan.chanpinxinghao=gsmx.chanpinxinghao(这个用什么,用inner join 可以么)yuangong on gsmx.gxname=yuangong.gxname where dingdan.dangqianzhuangtai="已投产"
我想要的结果是:可以显示"已投产"状态下的所有产品型号,并显示所有这些产品的工序,在这个前提下,在这些工序可以显示对应的操作员工。我之前写了个代码,但是他是只显示 有员工工序的记录,产品型号的所有工序并没有显示出来,如一产品有两道工序:加工和包装,员工表里有两员工,岗位都是加工,表格里就只显示这个产品的加工工序,并显示两条。显示两条是没错,但是为什么没显示包装这个工序呢。。

有幸能帮到你。我原来也遇到过这种问题。后来前辈告诉我inner join、left join、right join等几种连接的意义和区别后。我才明白了。像你说的这种情况用left join就没有问题了。left join表示左边的表中数据将全部显示,无论右边表中有无对应数据。right join相反,表示右边的表中数据将全部显示,无论左边表中有无对应数据。inner join表示只显示左边右边表中都满足连接条件的数据,左边表中不满足连接条件的数据将不再显示;右边表中不满足连接条件的数据也将不再显示。呵呵。所以,对你的情况需要显示全部产品。就得用left join前为产品表。
具体分析为什么inner join会不显示包装工序。是因为员工表中包装工序没有添加相应的员工。因为在员工表中找不到对应记录。无法显示产品表中这个包装工序。
代码是:select dingdan.chanpinxinghao,gsmx.gxname,dingdan.pingshenhao from dingdan left join gsmx on dingdan.chanpinxinghao=gsmx.chanpinxinghao left join yuangong on gsmx.gxname=yuangong.gxname where dingdan.dangqianzhuangtai="已投产"
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-21
select * from 表名 where 条件
第2个回答  2010-12-21
补充一下问题吧,我等通知了。
相似回答