PostgreSQL:从多对多关系中检索数据

时间:2020-07-08 13:38:09

标签: sql postgresql select many-to-many relationship

我需要一些帮助来从N-M关系(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,状态...)
  • TABLE_PS(字段:id_project,id_state)

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

1 个答案:

答案 0 :(得分:1)

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