sql - 带有子表的 SQL 查询
问题描述
我有两张表父母和孩子。
父表具有以下列
Parent_id,姓名
子表具有以下列
parent_id(外键),Identifier,identifier_value
现在我想列出不同的 parent_id,其名称和 identifier_value(of child table) 对于 Identifier = "test" 具有相同的 identifier_value 但对于 Identifier = "test1" 具有不同的 identifier_value
即考虑一个例子
父表---
Parent_id, Name
1, XYZ
2, PQR
子表
Parent_id, Identifier, Identifier_value
1, test, value1
1, test1, ghght
2, test, value1
2, test1, khkhgj
输出应该是
1, XYZ, value1, ghght
2, PQR, value1, khkhgj
它应该返回上面示例的结果,如 parent_id 1 和 2,test 具有相同的值,但 test1 具有不同的值
这是我写到现在的
SELECT p.parent_id,
p.name,
eid.identifier_value,
eid2.identifier_value
FROM parent p,
child eid,
child eid2
WHERE e.parent_id = eid.parent_id
AND e.parent_id = eid2.parent_id
AND eid.identifier = 'test'
AND eid2.identifier = 'test1'
AND EXISTS
(SELECT 1
FROM child eid3
WHERE eid3.identifier = 'test'
AND eid3.value =eid.value
AND eid3.parent_id <> eid.parent_id
AND EXISTS
(SELECT 1
FROM child eid4
WHERE eid4.parent_id = eid3.parent_id
AND eid4.identifier = 'test1'
AND eid3.value <> eid4.value
AND eid4.identifier = eid3.identifier
)
)
最后一个子查询中的问题。需要一些建议。
解决方案
这是你想要的?
select p.*, c1.Identifier_value, c2.Identifier_value
from parent p left join
child c1
on c1.parent_id = p.id and c1.identifier = 'test' left join
child c2
on c2.parent_id = p.id and c2.identifier = 'test2'
where c1.Identifier_value <> c2.Identifier_value;
推荐阅读
- typescript - 第二个参数类型取决于打字稿中的第一个参数
- reactjs - 如何防止一个组件中的 css 影响 React 中另一个组件中的 css?
- c++ - 如何创建 addEdge 函数?
- oauth - GitLab 中允许用户仅使用 oauth 令牌访问公共存储库的范围是什么?
- typescript - 将打字稿字符串转换为代码但不断获取 _os.platform 未定义
- r - R中的Uniroot上限和下限
- redis - Redis 集群分布式密钥槽
- c - 用逗号返回语句
- c++ - 数值函数返回值是否需要显式 static_cast?
- django - Kuberntes:仅 Django + Gunicorn / 路径工作