已有的数据库字段和数据
主表字段和数据: a表
aid | name | creator |
---|---|---|
1 | 测试一 | 张三 |
2 | 测试二 | 李四 |
3 | 测试三 | 王五 |
关联表的字段和数据: b表
bid | aid | deptname |
---|---|---|
1 | 1 | 国土局 |
2 | 2 | 水利局 |
3 | 3 | 经信局 |
4 | 1 | 规划节点一 |
5 | 1 | 规划节点二 |
6 | 2 | 规划节点一 |
7 | 2 | 规划节点二 |
8 | 2 | 规划节点三 |
问题描述
1.查询主表有哪些数据国土环节已办结,哪些数据在国土环节未办结?
2.查询主表有哪些数据规划环节已办结(只有当规划节点一二三都完成后才算办结),哪些数据在规划环节未办结?
sql语句
sql拆分 一步步来
1.首先查询关联表
select aid from b where deptname = '国土局'
select aid from b where deptname LIKE '%规划环节%' group by aid HAVING COUNT(0) >=3
模糊查询、根据aid分组、再根据count过滤
2.关联查询
查询已办结:
SELECT
distinct a.aid,
a.name,
a.creator
FROM
a a ,b b
where a.aid in (select aid from b where deptname = '国土局' )
查询结果
aid | name | creator |
---|---|---|
1 | 测试一 | 张三 |
SELECT
distinct a.aid,
a.name,
a.creator
FROM
a a ,b b
where a.aid in
(select aid from b where deptname LIKE '%规划环节%' group by aid HAVING COUNT(0) >=3 )
查询结果
aid | name | creator |
---|---|---|
2 | 测试二 | 李四 |
未办结 则是 not in