表PRDT
PRD_NO    NAME
A         烟缸表DEPT
DEP      NAME
10       生产部表PRDT1
WH    PRD_NO    QTY
01       B      0
01       C      10表MF_MO
MO_NO          PRD_NO      DEP
MO20100001        A         10表TF_MO
MO_NO          PRD_NO       WH     QTY_RSV
MO20100001        B         01        5
MO20100001        C         01        5
表MF_MO和表TF_MO通过MO_NO关联。
这里我想达到的效果是,当表TF_MO的MO_NO等于MF_MO的MO_NO,并且表TF_MO内B和C二个信息在表PRDT1内在WH和PRD_NO相等,且QTY_RSV*0.3的结果大于等于表PRDT1内的QTY时,就显示出表MF_MO内的相关信息,以下是我写的不知道哪里有问题,还请大家帮忙看看。SELECT H.MO_DD 下单日期, H.MO_NO 制令单号, H.MRP_NO 生产产品, A.NAME 产品名称, 
A.UT 单位, H.QTY 生产数量, H.STA_DD 预开工日, H.END_DD 预完工日, C.NAME 生产组别 FROM MF_MO H, PRDT A, DEPT C
WHERE H.MRP_NO=A.PRD_NO AND H.DEP=C.DEP AND NOT EXISTS 
(SELECT TOP 1 B.PRD_NO FROM TF_MO B ,PRDT1 G 
WHERE B.MO_NO=H.MO_NO AND B.WH=G.WH AND B.PRD_NO=G.PRD_NO AND G.QTY<(B.QTY_RSV*0.3) )

解决方案 »

  1.   

    select a.* from MF_MO a join TF_MO  b on a.MO_NO=b.MO_NO  --TF_MO的MO_NO等于MF_MO的MO_NO
                         join PRDT1  c on c.WH=b.WH and b.PRD_NO=c.PRD_NO  --TF_MO内B和C二个信息在表PRDT1内在WH和PRD_NO相等
    where QTY_RSV*0.3>c.QTY这样可以不。觉得已经达到你的意思 了
      

  2.   

    select a.* from MF_MO a join TF_MO  b on a.MO_NO=b.MO_NO  --TF_MO的MO_NO等于MF_MO的MO_NO
                         join PRDT1  c on c.WH=b.WH and b.PRD_NO=c.PRD_NO  --TF_MO内B和C二个信息在表PRDT1内在WH和PRD_NO相等
    where QTY_RSV*0.3>=c.QTY
      

  3.   

    若有not exists 就参考以下语句SELECT H.MO_DD 下单日期, H.MO_NO 制令单号, H.MRP_NO 生产产品, A.NAME 产品名称,  
    A.UT 单位, H.QTY 生产数量, H.STA_DD 预开工日, H.END_DD 预完工日, C.NAME 生产组别 FROM MF_MO H, PRDT A, DEPT C
    WHERE H.MRP_NO=A.PRD_NO AND H.DEP=C.DEP 
    AND NOT EXISTS  
    (SELECT  1 FROM PRDT1 G  WHERE B.WH=G.WH AND B.PRD_NO=G.PRD_NO AND G.QTY<(B.QTY_RSV*0.3))