首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自2个表的3个不同查询

来自2个表的3个不同查询
EN

Database Administration用户
提问于 2017-07-26 12:27:15
回答 1查看 63关注 0票数 1

我有三个带有示例值的表(调色板、框、布局):

调色板

代码语言:javascript
复制
|ID_P|sign|
|   1|  P1|
|   2|  P2|
|   3|  P3|
|   4|  P4|

代码语言:javascript
复制
|ID_B|sign|
|   1|  B1|
|   2|  B2|
|   3|  B3|
|   4|  B4|

布局

代码语言:javascript
复制
|ID_L|ID_P|ID_B|
|   1|   1|   1|
|   2|   2|   2|
|   3|   2|   3|
|   4|   3|   4|
|   5|   4|   4|

所以我可以有三个案子:

  1. 一个带一个框的软字(ID_L = 1)
  2. 一个调色板,上面有多个盒子(ID_L = 2,3)
  3. 多个调色板上的一个大盒子(ID_L= 4,5)

现在,我需要对其进行分组,因此我需要三个单独的查询,这些查询将返回:

对于案例1:所有ID_P的1:1“关系”

对于案例2:所有ID_P的1:N“关系”

对于案例3:所有ID_P的pf N:1“关系”

基本上,我对案例2和3有解决方案,但不知道如何得到案例1。

EN

回答 1

Database Administration用户

发布于 2017-07-26 13:44:38

使用子查询,应该提取所有仅发生在布局表中的ID_Ps,然后将它们与仅在布局表中出现一次的所有ID_Bs连接起来.本质上,只返回ID_Ps,每个调色板不超过一个盒,每个盒不超过一个调色板。

代码语言:javascript
复制
SELECT x.ID_P FROM  
  (SELECT ID_P, ID_B, COUNT(*) as count FROM Layout GROUP BY ID_P) x  
  INNER JOIN  
  (SELECT ID_P, ID_B, COUNT(*) as count FROM Layout GROUP BY ID_B) y   
WHERE x.count = 1 AND y.count = 1 AND x.ID_P = y.ID_P;
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/181847

复制
相关文章

相似问题

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