有一个合同表
HETONG(ID,相关信息等);
合同子表
HETONG_SUB(ID,PID(外键),WUZICODE(物资编码));
有一串字符串
'WZ001,WZ002,WZ016,' 里面存了一些WUZICODE(物资编码)
还可以用到物资表
WUZI(ID,WUZICODE);求合同中包含了字符串中所有物资编码的合同比如有一个合同ID为101,子表中有一些数据如
ID = 1, PID = 101, WUZICODE = 'WZ001'
ID = 5, PID = 101, WUZICODE = 'WZ002'
ID = 6, PID = 101, WUZICODE = 'WZ007'
ID = 9, PID = 101, WUZICODE = 'WZ016'
这样就可以查到编号101如果PID为101的子表没有包含字符串中所有的物资编码就不能查到这SQL该咋写呢

解决方案 »

  1.   


    --try
    select HETONG.* from HETONG,HETONG_SUB
    where HETONG.ID=HETONG_SUB.PID 
    and exists (select 1 from 
    (select wm_concat(WUZICODE) WUZICODE from WUZI group by WUZICODE) t
    where t.WUZICODE=HETONG_SUB.WUZICODE;
      

  2.   


    select HETONG.* from HETONG,HETONG_SUB
    where HETONG.ID=HETONG_SUB.PID 
    and exists (select 1 from 
    (select wm_concat(WUZICODE) WUZICODE from WUZI group by WUZICODE) t
    where t.WUZICODE=HETONG_SUB.WUZICODE);--少了个括号
      

  3.   

    select * from hetong a,hetong_sub b  
    where a.id=b.pid 
    and exists (select wuzicode from wuzicode where b.wuzicode=wuzi.wuzicode) 
      

  4.   

    select HETONG.* from HETONG,HETONG_SUB
        where HETONG.ID=HETONG_SUB.PID 
        and exists (select 1 from 
            (select wm_concat(WUZICODE) WUZICODE from WUZI group by WUZICODE) t
                where t.WUZICODE=HETONG_SUB.WUZICODE);