我正在将客户机的软件数据库从Oracle迁移到PostgreSQL,我在理解查询、查询的功能以及如何迁移查询时遇到了一些困难。
问题是:
SELECT *
FROM TBL1, TBL2, TBL3, TBL4
WHERE TBL3.Project_ID = TBL1.Project_ID
AND TBL2.Type_ID = TBL1.Type_ID
AND TBL4.PROPERTY_NAME(+)='Id'
AND TBL4.Entity_ID(+)=TBL1.Entity_ID
我没有得到的部分,是“Id”上的外部连接(+)。
桌子上的接头,好吧,但要用绳子?我不知道它是干什么的。
有人有主意吗?
谢谢。
最佳答案
TBL4.PROPERTY_NAME(+)='Id'
意味着当行被内部连接时,该值必须是'Id',但是当行被外部连接时,该条件被计算为true
但是,您应该将语句重写为标准:
SELECT *
FROM TBL1
JOIN TBL2 ON TBL2.Type_ID = TBL1.Type_ID
JOIN TBL3 ON TBL3.Project_ID = TBL1.Project_ID
LEFT JOIN TBL4 ON TBL4.Entity_ID=TBL1.Entity_ID AND TBL4.PROPERTY_NAME='Id'