Postgres查询连接三个表

时间:2015-07-06 01:27:29

标签: sql postgresql

我无法获得我认为非常简单的查询。我设法编写了我的基本查询,但是当我在第三个表上尝试另一个连接时,它返回一个空结果。

以下是正在运作的代码:

SELECT 
    *
FROM "Locations" AS r 
LEFT OUTER JOIN "Units" AS f 
    ON r.city = f.city AND 
       r.area = f.region
WHERE
    ST_Contains(
        ST_SetSRID(r.geom, 4326),  
        ST_SetSRID(ST_MakePoint(  
            -75.9165573, 45.3416112
        ), 4326)
    )

那些给我带来麻烦的代码:

SELECT 
    *
FROM "Locations" AS r 
LEFT OUTER JOIN "Units" AS f 
    ON r.city = f.city AND 
       r.area = f.region
LEFT OUTER JOIN "UnitDetails" AS fr
    ON fr."UnitId" = f.id
WHERE
    ST_Contains(
        ST_SetSRID(r.geom, 4326),  
        ST_SetSRID(ST_MakePoint(  
            -75.9165573, 45.3416112
        ), 4326)
    )

UnitId是外键。我也尝试使用而不是ON,但我不明白Postgres是如何找到正确结果的。列中包含了列,但它们都是空结果。

我来自MySQL,所以我想知道这是否只是一种语法,我还没有到达。

注意:如果我删除了was语句,它就能完美运行。只要我添加它......它就不再有用了。

1 个答案:

答案 0 :(得分:0)

这最终与一个我无法完全解释的奇怪的索引问题有关。查询确实很完美,这非常烦人。