首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -不使用游标检查表数据之间的一致性。

SQL -不使用游标检查表数据之间的一致性。
EN

Stack Overflow用户
提问于 2014-04-21 12:08:10
回答 1查看 124关注 0票数 0

我使用的是SQL,我有4个表。

  1. tbl_project(project_id是主键)
  2. tbl_task (包含task_id作为主键,project_id作为外键)
  3. tbl_assignment (包含assignment_id作为主键task_id作为外键)
  4. tbl_document (包含document_id作为主键,assignment_id作为外键),

代码语言:javascript
运行
复制
- A project can have one or more tasks
- A task can have one or more assignemnts
- An assignemnt can have one or more documents

现在我需要编写一个存储过程,它将验证一个项目并返回验证结果,其中项目id将作为参数传递。

  1. 需要检查至少有一个任务的项目。
  2. 这个项目下的所有任务至少有一个任务
  3. 此项目/任务下的所有作业至少有一份文件

我有一个临时表,在那里我需要插入验证错误,比如“Task-Task1不包含任何赋值”、“转让人- Assignment2不包含任何文档网”等等。

有没有办法不使用游标来实现这个逻辑?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 12:23:19

这种类型验证不需要游标。以下是三个这样的查询:

没有任务的项目:

代码语言:javascript
运行
复制
select p.*
from tbl_projects p left outer join
     tbl_tasks t
     on p.project_id = t.project_id
where t.project_id is null;

任务至少有一个任务:

代码语言:javascript
运行
复制
select p.*
from tbl_tasks t left outer join
     tbl_assignments a
     on a.task_id = t.task_id
where a.task_id is null;

所有作业至少有一份文件:

代码语言:javascript
运行
复制
select p.*
from tbl_assignments a left outer join
     tbl_documents d
     on a.assignment_id = d.assignment_id
where d.assignment_id is null;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23197130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档