我有三个带有示例值的表(调色板、框、布局):
|ID_P|sign|
| 1| P1|
| 2| P2|
| 3| P3|
| 4| P4||ID_B|sign|
| 1| B1|
| 2| B2|
| 3| B3|
| 4| B4||ID_L|ID_P|ID_B|
| 1| 1| 1|
| 2| 2| 2|
| 3| 2| 3|
| 4| 3| 4|
| 5| 4| 4|所以我可以有三个案子:
现在,我需要对其进行分组,因此我需要三个单独的查询,这些查询将返回:
对于案例1:所有ID_P的1:1“关系”
对于案例2:所有ID_P的1:N“关系”
对于案例3:所有ID_P的pf N:1“关系”
基本上,我对案例2和3有解决方案,但不知道如何得到案例1。
发布于 2017-07-26 13:44:38
使用子查询,应该提取所有仅发生在布局表中的ID_Ps,然后将它们与仅在布局表中出现一次的所有ID_Bs连接起来.本质上,只返回ID_Ps,每个调色板不超过一个盒,每个盒不超过一个调色板。
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;https://dba.stackexchange.com/questions/181847
复制相似问题