我的数据库中有如下三张表:
code_project,(项目)
QM_Certificate_Company,(公司)
QM_Certificate_WatchMan(人员)
其中人员表通过公司编号与公司建立关系,公司表通过项目编号于项目表建立关系!
在ADOQUERY中执行如下语句:‘
SELECT QM_Certificate_WatchMan.*
FROM code_project INNER JOIN
     QM_Certificate_Company ON
     code_project.ProjectCode = QM_Certificate_Company.ProjectCode INNER JOIN
     QM_Certificate_WatchMan ON
     QM_Certificate_Company.CompanyCode=QM_Certificate_WatchMan.CompanyCode
WHERE code_project.PowerplantSenquence='+ ''''+ Code1 +''''
其中Code1是查询变量!
查询结果没有问题。
在执行删除操作的时候会有如下的问题,张三属于A公司,李四属于A公司,删除张三结果正常,另外的情况只有张三属于A公司,删除张三的记录时,同时也会把公司表中A公司记录删除,我并不想把公司的记录同时删除,数据库(SQL 2000)中没有建立关系,是单独的表。请问是不是SQL语句有错误,该怎么写?是否用Left Join还是Right Join?

解决方案 »

  1.   

    不要采取这样的删除方式,得到员工的ID后再删除该员工的记录。
    具体什么原因说不清,但总体感觉这样的query和视图性质差不多,理论上不能进行删除操作,但实际上...试试删除视图中的记录就知道了
      

  2.   

    用ADO时如果还在SQL里使用触发器的话,到时候欲哭无泪时不要怪别人。对贴主的问题,不要直接用query.delete,这跟查询语句无关,直接对结果集里的数据进行操作会直接回传至源表的。
    查询用表间联接只会影响取数的结果,你的操作跟内/外联无关。
    还是直接用delete QM_Certificate_WatchMan WHERE code_project.PowerplantSenquence='+ ''''+ Code1 +''''
    完成。
      

  3.   

    是否是另外使用一个ADOQuery,我昨晚研究之后发现。将公司表的主健取消就不会删除数据,设置了主健就会发生这样的情况,我还在继续测试中^-^