求一SQL语句,100分

dopsop110 2010-09-06 03:45:38
2张表
taskinfo表
TS_ID -----主键
tS_Status ----状态

taskRelations 表
tr_ID ----主键
TR_TSID ----当前任务键 对应了taskinfo表的主键
TR_FrontID -----前置任务 对应了taskinfo表的主键

数据如下
taskinfo表
TS_ID TS_Status
1 0
2 1
3 0
4 1
5 1
6 0

taskRelations 表
TR_ID TR_TSID TR_FrontID
1 2 4
2 2 3
3 4 5
4 5 6

现在有3个任务想改动,如 1,2,5,但是有限制条件:就是根据taskRelations 表找出其前置任务,如果前置任务的状态TS_Status=1的则不允许改动。1没有前置任务 可以直接改,2的前置任务是3,4 而4的状态是1 那么2不允许改动 剔除掉, 5的前置任务是6 ,6的状态是0 可以直接改。不知道我这样说 大家明白不明白。希望高手帮帮忙 不明白的直接回帖问。
...全文
210 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
dopsop110 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 happying_e 的回复:]

不好意思~看掉勒一个not

判断一条记录的TR_TSID
在另外一个表里面是否存在,不存在返回真
也就是显示这一条记录,存在返回假,过滤这一条记录
[/Quote]
啊 有点明白了 谢谢啊 结贴了
weilipengweilipeng 2010-09-08
  • 打赏
  • 举报
回复
create table ooo
(id int not null identity,)--自动增长
alter table ooo--添加列
add name char(4) null
alter table ooo --删除列
drop column name
alter table ooo--添加主键
add primary key(id)
create table three
(id int not null,
constraint three primary key(id))
米娅 2010-09-08
  • 打赏
  • 举报
回复
不好意思~看掉勒一个not

判断一条记录的TR_TSID
在另外一个表里面是否存在,不存在返回真
也就是显示这一条记录,存在返回假,过滤这一条记录
米娅 2010-09-08
  • 打赏
  • 举报
回复
是内链,
form子句后有关键字insert join。。。on

这个就是判断一条记录的TR_TSID
在另外一个表里面是否存在,存在返回真
也就是显示这一条记录,不存在返回假,过滤这一条记录
dopsop110 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 ws_hgo 的回复:]

exists-->存在
在where 条件中存在的查询
出来
not exists则反之
[/Quote]
如果存在数据,怎么跟前一个表发生关联呀?
这个不像内联 有一个字段做为关系
这个存在该怎么理解?
wandola001 2010-09-07
  • 打赏
  • 举报
回复
貌似只要查出不能修改的任务是吧?
wandola001 2010-09-07
  • 打赏
  • 举报
回复
lz劳烦将答案贴出
低调的感觉 2010-09-07
  • 打赏
  • 举报
回复
来接分咯。。。
heavstar 2010-09-07
  • 打赏
  • 举报
回复
帮顶,看下结果
pcdecc 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 htl258 的回复:]

建议楼主把解决方法也贴一下,方便需要的网友搜索浏览。
[/Quote]
同意
君_洛洛 2010-09-07
  • 打赏
  • 举报
回复
那我也接点分
sardineany 2010-09-07
  • 打赏
  • 举报
回复
接分~话说刚发帖就弄出来了是么
htl258_Tony 2010-09-07
  • 打赏
  • 举报
回复
建议楼主把解决方法也贴一下,方便需要的网友搜索浏览。
yingzi_91 2010-09-07
  • 打赏
  • 举报
回复
祝贺你!
接分,接分了......哈哈哈!
幸运的意外 2010-09-07
  • 打赏
  • 举报
回复
惠泽万家!
Mark杨 2010-09-07
  • 打赏
  • 举报
回复
哥们,给点分吧。。。
ws_hgo 2010-09-07
  • 打赏
  • 举报
回复
exists-->存在
在where 条件中存在的查询
出来
not exists则反之
dopsop110 2010-09-07
  • 打赏
  • 举报
回复
好的 贴出答案
逻辑可能有点不对 意思就是只有前置任务状态是0并且自己的任务状态也是0的才可以修改
其实不难
再多嘴问一句 exists是啥意思?
我的理解就是排除的意思 把符合条件的查出来 然后排除掉,不知道这样理解对不对

--我的实际表里有一些其他限制的字段。但是大体意思应该能看出来的
SELECT DISTINCT a.TS_id FROM taskinfo AS a WHERE NOT EXISTS
(
SELECT TR_TSID
FROM tPR_Task_Relation AS c INNER JOIN tPR_Task_Info AS d ON c.TR_FrontID=d.TS_ID
WHERE c.TR_TSID=a.ts_id AND d.TS_StatusID<>2 AND c.SysDeleteSign=0
)

duanzhi1984 2010-09-06
  • 打赏
  • 举报
回复
哥们,给点分吧。。。
天下如山 2010-09-06
  • 打赏
  • 举报
回复
接分
加载更多回复(9)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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