查询A表的数据,当A表物料分配了供应商后,会在B表生成数据,但是查询时又调用了B表的字段,所以整体查询结果就多行了。应该当A表数据分配完后,查询结果就剔除A表的数据。
SQL
暂时不会写
当请购单号一样,然后序号有重复的,把供应商为NULL的剔除
序号不重复的记录中,供应商可能为NULL吗 。
如果不为NULL,加上条件
and 供应商 is not null
写了一下,看似简单,还不好写,思路是把这个表拆分两部分,一部分是序号重复的,这部分干掉供应商为空,所有供应商都为空的情况,就取其中一个1;
第二部分是序号不重复的,这部分不处理,然后把两部分的数据 union 起来
思路就是这样,看对你有没有启发
加一个where条件
and h.supplier_id is not null
分析过程:
你这个所谓出现重复记录的地方,供应商一个为空一个有值,很明显并不是供应商表中出现了问题,所以看这个字段的来源,
首先是I表,但很明显,这是供应商主档表,不会有供应商为空的情况
然后I表和H表连接,这个暂时不明,H表继续和A表连接,但A表说了只会有一条记录,
那么问题极有可能出现在H表,即H表中,对于同一个requesition_d_id,会存在两条记录,其supplier_id字段,一行为空,一行有值。
因此得出需要加上面这个条件的结论。
当然,这个条件不能加在最后,而是应该加在查询 h表时,即
left join (select * from req_dispatched where supplier_id is not null) h on a.requesition_d_id=h.requesition_d_id
另外,这种代码麻烦不要贴截图,请直接使用代码块添加,你提问的时候,平台上是有提示的吧