日期:2014-05-17  浏览次数:20661 次

求一句SQL语句
有一个合同表
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该咋写呢

------解决方案--------------------
SQL code

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);--少了个括号