求一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 可以直接改。不知道我这样说 大家明白不明白。希望高手帮帮忙 不明白的直接回帖问。
...全文
174 点赞 收藏 29
写回复
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日
接分
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9307

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告