怪象
第一SQL句
select t.* From FileOUT t
INNER JOIN
(select Fileid,Rev from Relationfile where Relationfile.Nodeid in
(SELECT nodeid FROM
(select T1.* from DBO.tree T1 INNER JOIN
DBO.tree T2 ON T1.PARENT=T2.NODEID INNER JOIN
DBO.tree T3 ON T2.PARENT=T3.NODEID INNER JOIN
DBO.tree T4 ON T3.PARENT=T4.NODEID INNER JOIN
DBO.tree T5 ON T4.PARENT=T5.NODEID AND T5.nodename like 'C%系列% ') C
WHERE (C.NodeName like 'Part%List% ' or C.NodeName like '生工格% ' or
C.NodeName like '生效率排拉% ' or C.NodeName like '出格% '
or C.NodeName like '外形% ' or C.NodeName like '技% ' or C.NodeName like '控制% '))) as p
ON t.fileid=p.fileid and t.rev=p.rev and t.ACCEPTTEAMID= '2201A '
第二SQL句
delete t From FileOUT t
INNER JOIN
(select Fileid,Rev from Relationfile where Relationfile.Nodeid in
(SELECT nodeid FROM
(select T1.* from DBO.tree T1 INNER JOIN
DBO.tree T2 ON T1.PARENT=T2.NODEID INNER JOIN
DBO.tree T3 ON T2.PARENT=T3.NODEID INNER JOIN
DBO.tree T4 ON T3.PARENT=T4.NODEID INNER JOIN
DBO.tree T5 ON T4.PARENT=T5.NODEID AND T5.nodename like 'C%系列% ') C
WHERE (C.NodeName like 'Part%List% ' or C.NodeName like '生工格% ' or
C.NodeName like '生效率排拉% ' or C.NodeName like '出格% '
or C.NodeName like '外形% ' or C.NodeName like '技% ' or C.NodeName like '控制% '))) as p
ON t.fileid=p.fileid and t.rev=p.rev and t.ACCEPTTEAMID= '2201A '
以上句什查出的料和除所影的料列不一呢
[解决办法]
因为FileOUT与子查询存在一对多的关系,因此查询出的时候所列出的纪录数自然多于FileOUT原纪录数。
[解决办法]
因为FileOUT t表的一条记录以条件t.fileid=p.fileid and t.rev=p.rev and t.ACCEPTTEAMID= '2201A '与子查询连接的时候,产生了多条记录,也就是说子查询的
p.fileid,p.rev有重复
[解决办法]
查询的时候会把关联的都显示出来``而删除的时候只删除主表的``所以相对应的查出的料和除所影的料列不一。
[解决办法]
建不在用inner join 最好直接用
where,那子比容易理解