我尝试尽可能好地解释问题。
我有多个表格:
项目,小组,期间。
这三者的连接表称为project_status。
我会快速展示内容
项目
| projectID | name | date |
| ------------------------|
| 1 | test | 2015 |
| 2 | test | 2015 |
组
| groupID| name |
| --------------|
| 1 | ab |
| 2 | cd |
期间
| periodID | status |
| ---------------------|
| 1 | 0 | #inactive
| 2 | 1 | #active
| 3 | 2 | #new
项目统计
| projectID | groepID | periodID |
| -------------------------------|
| 1 | 1 | 2 | #active period
| 1 | 1 | 3 | #new period
现在你可以选择一个时期。周期是活跃的,然后我不显示 项目,因为它正在使用(活动)。现在,当我选择状态为new的句点时,必须进行检查以确定:
问题是当我写一个查询时,总是存在活动期。我怎么能写一个只检查状态为新的项目状态的查询
我尝试了以下查询
SELECT projectID, name
FROM project
WHERE projectID IN
(
SELECT ps.projectID
FROM project_status as ps
JOIN period as per
ON ps.periodID = per.periodID
WHERE per.status = 0
AND per.stats != 2
)
OR projectID NOT IN
(
SELECT projectID
FROM project_status
)
答案 0 :(得分:1)
您的查询看起来正确。
只删除
AND per.periode_status!= 2
什么是periode_status?你没解释
WHERE per.status = 0
AND per.periode_status != 2 -- remove it
答案 1 :(得分:0)
你可以使用交叉申请,像这样选择projectID&名称where periodID = 3:
{{1}}