首页 > 解决方案 > 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'

表格是:

每个表都有主键集。那么,怎么了?少了什么东西?任何帮助,将不胜感激 ;-)

标签: sqlpostgresqlselectmany-to-manyrelationship

解决方案


仅从 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 
        );

推荐阅读