这可能很容易,但我无法弄清楚,如何通过一个查询从我的数据库中获取必要的值。现在就想不出来。我将在CodeIginiter系统中进行此查询。
表'信息'构造:
CREATE TABLE information (
planid int(11) NOT NULL,
production_nr int(11) NOT NULL,
status int(11) NOT NULL
);
表'信息'内容:
必要的产量:
我想得到(最好 - 只有一个查询,但如果不可能,那么有多个)所有planid的位置:所有这个计划id的pruduction_nrs状态> = 3.
在这种情况下,我需要获得这些plandid:2和5,因为这些planid的所有produ_nrs的状态都大于或等于3。
答案 0 :(得分:1)
select planid, production_nr
from information inf1
where not exists (select 1 from information inf2
where inf1.planid = inf2.planid
and status < 3)
您可以考虑根据需要修改select子句(第一行):
添加distinct(如果表PK包含状态列)
更改列列表
答案 1 :(得分:0)
试试这个,
SELECT planid , production_nr FROM information
WHERE production_nr IN(SELECT production_nr FROM information) AND STATUS >=3
答案 2 :(得分:0)
你的问题被称为关系分裂。基本上有两种方法可以实现它
1)planid,其中不存在状态为&lt;的production_nr; 3
select planid
from information i1
where not exists (
select 1 from information i2
where i1.planid = i2.planid
and i2.planid < 3
)
2)planid,其中production_nr的数量等于output_nr的数量,状态为&gt; = 3.我将把它留作练习;-)