如何在MySQL中编写此查询?

LPrc

我有以下表格:

project(pid integer primary key, title varchar(30), finished boolean)
action(aid integer primary key, title varchar(30), finished boolean)
project_action(pid integer, aid integer, primary key(pid, aid))

一个项目可以包含多个动作,一个动作只能属于一个或一个项目。因此,基数为(项目)0..1 <-> *(动作)。

我如何才能获得行动已全部完成的项目?

我尝试了这个,但是只要完成其中一项操作,就已经给了我一个项目:

SELECT pid FROM project WHERE pid IN (SELECT DISTINCT pid FROM project_action WHERE aid IN (SELECT aid FROM action WHERE action.finished = true));
浅褐色的

尽管对于表内容的意图有些不清楚,但我认为您的结构可能会有些偏离。让我举一个简单的汽车维修示例(我绝对不是车身修理工)。

Project, Repair Person "A" car.
Pre-clean
Pull dent / repair parts
Apply any filler
Sand it
Paint

如果“动作”在多个项目中保持一致,则该表将没有“完成”布尔值标志。该标志将特定于正在处理的一个项目。如果我有10辆车,那么在不同阶段的某个地方,我可以完全完成3辆赛车,而在其他地方完成7辆赛车。所以,也就是说,我期望的结构更像

project(pid integer primary key, title varchar(30), finished boolean)
action(aid integer title varchar(30))
project_action(pid integer, aid integer, finished boolean, primary key(pid, aid))

说了这么多,并保持原始结构不变,您可以拥有一个示例,其中需要在该示例上执行2,3或更多操作。如果ANY操作不完整,则整个项目都不完整。我还将在您的“操作”表上基于(pid,辅助,完成)的索引

然后做一个NOT EXISTS的完成=假

SELECT
      p.pid,
      p.title
   from
      project p
   where
      NOT EXISTS ( select pa.pid
                     from project_action pa
                        join action a on pa.aid = a.aid
                        AND a.finished = false
                     where pa.pid = p.pid )

这基本上是在说明……给我所有项目,无论当前项目是什么,都没有针对该项目的“ FALSE”完成动作。只要找到符合条件的记录,EXISTS(或NOT EXISTS)就会停止。因此,如果您对一个项目有10项未完成的工作,则一旦找到ONE,就用合格的WHERE完成该操作,并接受或拒绝该项目记录,然后转到下一个项目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在MySql中编写此查询?

来自分类Dev

如何在joomla中编写此查询

来自分类Dev

如何在activerecord中编写此查询?

来自分类Dev

如何在yii中编写此查询?

来自分类Dev

如何在yii中编写此查询?

来自分类Dev

如何在 sql 中编写此查询?

来自分类Dev

如何在Laravel中编码此SQL查询?编写mySQL HAVING的正确方法

来自分类Dev

如何在mysql中编写子查询

来自分类Dev

如何在MySQL中查询此输出?

来自分类Dev

如何在Spring中编写此Mongo聚合查询?

来自分类Dev

如何在Laravel 4中编写此查询?

来自分类Dev

如何在sql-server中编写此查询?

来自分类Dev

如何在SSIS / SQL中编写此IF THEN ELSE查询?

来自分类Dev

如何在cdbcriteria中编写此联接查询?

来自分类Dev

如何在Laravel中编写此SQL查询?

来自分类Dev

我如何在节点js sequelize中编写此查询

来自分类Dev

如何在SQL Server中编写此sql查询?

来自分类Dev

如何在SQL Server 2008中编写此查询

来自分类Dev

如何在SQL Server 2008中编写此查询?

来自分类Dev

如何在Codeigniter活动记录中编写此查询

来自分类Dev

我如何在PostgreSQL中编写此查询?

来自分类Dev

如何在laravel 5.2中编写此关联查询?

来自分类Dev

我如何在实体框架中编写此查询

来自分类Dev

如何用PDO编写此mysql查询

来自分类Dev

如何在Rails 4中使用Join而不是子查询来编写此ActiveRecord查询

来自分类Dev

如何在Laravel中编写此查询(包含group by并加入子查询)?

来自分类Dev

如何在MYSQL中为多表级搜索编写查询

来自分类Dev

搜索时如何在准备方法中编写MySQL查询?

来自分类Dev

如何在Oracle SQL查询中编写mysql TIMESTAMPDIFF函数

Related 相关文章

热门标签

归档