sql - PostgreSQL:从多对多关系中检索数据
问题描述
我需要一些帮助来从 NM 关系(M 个州的 N 个项目)中检索数据。我写了以下SELECT,没有错误但结果是0行(实际上法国有6个项目)......
SELECT
p.id_prj, p.title
FROM
table_p p
JOIN
table_ps ps ON p.id_prj = ps.id_project
JOIN
table_s s ON s.st_code = ps.id_state
WHERE
s.name = 'France'
表格是:
- TABLE_P(字段:id_prj、标题....)
- TABLE_S(字段:st_code、state....)
- TABLE_PS(字段:id_project、id_state)
每个表都有主键集。那么,怎么了?少了什么东西?任何帮助,将不胜感激 ;-)
解决方案
仅从 table_p 中选择,并使用 WHERE EXISTS(...) :
SELECT *
-- p.id_prj, p.title
FROM table_p p
WHERE EXISTS (
SELECT *
FROM table_ps ps
JOIN table c ON c.st_code = ps.id_state AND c.name = 'France'
WHERE ps.id_project = p.id_prj
);
推荐阅读
- reactjs - 只是在父组件中进行查询而不渲染任何东西并将所有数据作为道具发送
- c# - 必须先关闭的 Open DataReader 问题
- c# - Efficient way to pass Bitmap into registered COM component
- html - 难以使 Strava Iframe 响应式 (CSS/HTML)
- php - 根据会话变量显示按钮不起作用
- node.js - 查询从主集合的一个数组字段中加入 mongo 中的两个集合
- json - 将 JSON 转换为字符串错误字符串文字未终止
- laravel - 如何在 laravel 之外的 bash 脚本中运行 artisan 命令?
- python - 未正确从文件中读取 unicode 文本、缺少空格、错误字符
- python - pip install ortools:没有匹配的分布 - Alpine