一个关于内连接的问题

ninliu 2003-11-13 11:49:09
我的数据库中有如下三张表:
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?
...全文
49 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigBeans 2004-03-03
  • 打赏
  • 举报
回复
不能直接在查询的结果里面执行删除的!
ninliu 2003-11-14
  • 打赏
  • 举报
回复
小弟由于不是计算机专业毕业的,所以有很多幼稚的问题还请大家多多关照啊!:)
ninliu 2003-11-14
  • 打赏
  • 举报
回复
是否是另外使用一个ADOQuery,我昨晚研究之后发现。将公司表的主健取消就不会删除数据,设置了主健就会发生这样的情况,我还在继续测试中^-^
njxdh 2003-11-13
  • 打赏
  • 举报
回复
你的删除语句怎样写的?
digestion 2003-11-13
  • 打赏
  • 举报
回复
用ADO时如果还在SQL里使用触发器的话,到时候欲哭无泪时不要怪别人。

对贴主的问题,不要直接用query.delete,这跟查询语句无关,直接对结果集里的数据进行操作会直接回传至源表的。
查询用表间联接只会影响取数的结果,你的操作跟内/外联无关。
还是直接用delete QM_Certificate_WatchMan WHERE code_project.PowerplantSenquence='+ ''''+ Code1 +''''
完成。
wooden954 2003-11-13
  • 打赏
  • 举报
回复
建议用触发器
WuLoveXue 2003-11-13
  • 打赏
  • 举报
回复
有没有触发器啊?
areshong 2003-11-13
  • 打赏
  • 举报
回复
不要采取这样的删除方式,得到员工的ID后再删除该员工的记录。
具体什么原因说不清,但总体感觉这样的query和视图性质差不多,理论上不能进行删除操作,但实际上...试试删除视图中的记录就知道了
ninliu 2003-11-13
  • 打赏
  • 举报
回复
ADOQUERY1.Delete;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧