1表:
SELECT A.BF_DD AS 报废日期,C.MO_NO AS 制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废数量,SUBSTRING(C.PRD_NAME,0,16)
 AS 加工产品名称
FROM MF_BF A,TF_BF B,TF_GQ C
WHERE B.BF_NO=A.BF_NO
AND C.GQ_NO=B.BIL_NO
注:此表不包含表D,我查出7条记录
---------------------------
2表:
SELECT A.BF_DD AS 报废日期,C.MO_NO AS 原制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废数量,SUBSTRING(C.PRD_NAME,0,16)
 AS 加工产品名称,D.QTY  as 重开数量 ,D.MO_NO AS 新制令单号,差异数量=B.QTY-D.QTY
FROM  MF_BF  A, TF_BF B,TF_GQ C, MF_MO D
WHERE  B.BF_NO=A.BF_NO
AND C.GQ_NO=B.BIL_NO
AND D.MO_NO=A.BF_NO
此表加上表D:我查出一条记录。
注意:本表多了个条件:AND D.MO_NO=A.BF_NO
多了个表MF_MO
---------------------------
求语句:
要包含2表中所有字段,要包含表1中所有记录,要包含表2与表1某字段相同的记录
表1  字段1,字段2,字段3      7条记录
表2  字段1,字段2,字段3,字段4   一条记录
结果:
序  字段1   字段2    字段3    字段4
1   有       有        有
2   有       有        有
3   有       有        有
4   有       有        有
5   有       有        有      有
6   有       有        有
7   有       有        有
注:有表示有数据。
其中第五个有数据,是因为另一表多了“字段4”,且字段4SQL行业数据

解决方案 »

  1.   

    要包含2表中所有字段,要包含表1中所有记录,要包含表2与表1某字段相同的记录
    -------------------
    SELECT *
    FROM (
    SELECT A.BF_DD AS 报废日期,C.MO_NO AS 原制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废数量,SUBSTRING(C.PRD_NAME,0,16)
     AS 加工产品名称,D.QTY  as 重开数量 ,D.MO_NO AS 新制令单号,差异数量=B.QTY-D.QTY
    FROM  MF_BF  A, TF_BF B,TF_GQ C, MF_MO D
    WHERE  B.BF_NO=A.BF_NO
    AND C.GQ_NO=B.BIL_NO
    AND D.MO_NO=A.BF_NO
    )t1
    WHERE EXISTS(SELECT 1 FROM 
    (SELECT A.BF_DD AS 报废日期,C.MO_NO AS 制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废数量,SUBSTRING(C.PRD_NAME,0,16)
     AS 加工产品名称
    FROM MF_BF A,TF_BF B,TF_GQ C
    WHERE B.BF_NO=A.BF_NO  AND C.GQ_NO=B.BIL_NO
    )t2
    WHERE t1.报废日期=t2.报废日期 AND t1.原制令单号=t2.制令单号 AND t1.报废单号=t2.报废单号 AND t1.加工产品编号=t2.加工产品编号
    AND t1.报废数量=t2.报废数量 AND t1.加工产品名称=t2.加工产品名称)

      

  2.   

    谢谢楼上回复。
    帮我分析下面语法。我写了这样一个语句,但报错,语法可能不对。
    我要实现两个表合并,t1全部记录,t2包含T1条件的(WHERE t1.报废单号=t2.新制令单号)该怎么写。
    多谢。
    SELECT *
    FROM (
    SELECT A.BF_DD AS 报废日期,C.MO_NO AS 制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废数量,SUBSTRING(C.PRD_NAME,0,16)
     AS 加工产品名称
    FROM MF_BF A,TF_BF B,TF_GQ C
    WHERE B.BF_NO=A.BF_NO
    AND C.GQ_NO=B.BIL_NO)t1( SELECT A.BF_DD AS 报废日期,C.MO_NO AS 原制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废应补数量,SUBSTRING(C.PRD_NAME,0,16)
     AS 加工产品名称,D.QTY  as 实补数量 ,D.MO_NO AS 新制令单号,应补实补差异数量=B.QTY-D.QTY
    FROM  MF_BF  A, TF_BF B,TF_GQ C, MF_MO D
    WHERE (B.BF_NO=A.BF_NO
    AND C.GQ_NO=B.BIL_NO
    AND D.MO_NO=A.BF_NO))t2WHERE t1.报废单号=t2.新制令单号
      

  3.   

    SELECT *
    FROM (
    SELECT A.BF_DD AS 报废日期,C.MO_NO AS 制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废数量,SUBSTRING(C.PRD_NAME,0,16)
     AS 加工产品名称
    FROM MF_BF A,TF_BF B,TF_GQ C
    WHERE B.BF_NO=A.BF_NO
    AND C.GQ_NO=B.BIL_NO)t1SELECT *
    FROM (
     SELECT A.BF_DD AS 报废日期,C.MO_NO AS 原制令单号,B.BF_NO AS 报废单号,B.PRD_NO AS 加工产品编号,B.QTY AS 报废应补数量,SUBSTRING(C.PRD_NAME,0,16)
     AS 加工产品名称,D.QTY  as 实补数量 ,D.MO_NO AS 新制令单号,应补实补差异数量=B.QTY-D.QTY
    FROM  MF_BF  A, TF_BF B,TF_GQ C, MF_MO D
    WHERE (B.BF_NO=A.BF_NO
    AND C.GQ_NO=B.BIL_NO
    AND D.MO_NO=A.BF_NO))t2WHERE T1.报废单号=T2.新制令单号说明:
    T1是全部报废单,T2是对某些报废单进行处理的情况。
    要求:要保留全部报废单记录,显示已处理报废单的情况,还余多少报废单没处理完。
    比如:
    t1          t2             条件
    报废数量    处理数量         T1.报废单号=T2.新制令单号