我需要将一个表('Project')连接到同一列名称('Project.PRJG_RecordID')上的另外两个表('SalesOrder'和'POI'),但是'ProjectID'列中的条件是“项目”表在“POI”中必须为空,在“SalesOrder”中不能为空。你是怎么写这种语法的?
我最接近的是:
(自原始邮编以来编辑):
Select *
From SalesOrder
Inner Join Project On Project.PRJG_RecordID =
SalesOrder.SOM_PRJG_DfltRecordID
Left Join POI On ProjectGroup.PRJG_RecordID =
POI.POI_PRJG_DfltRecordID
Where Project.ProjectID is null -- as it relates to the POI table.
And Project.ProjectID = '12345' -- as it relates to the SalesOrder table.
注意:Project.PRJG_RecordID是uniqueidentifier,而Project.ProjectID是nvarchar(25)。
如何?
答案 0 :(得分:0)
我可能会误解,但似乎你只需要添加一个
AND SalesOrder.ProductID IS NOT NULL
到WHERE子句的末尾
你也没有加入POI表。您加入ProjectGroup,它在任何地方都没有使用。也许你打算这样做?
Select *
From SalesOrder
Inner Join Project On Project.PRJG_RecordID =
SalesOrder.SOM_PRJG_DfltRecordID
Left Join POI On POI.POI_PRJG_DfltRecordID = SalesOrder.SOM_PRJG_DfltRecordID
Where Project.ProjectID is null
AND SalesOrder.ProductID IS NOT NULL
答案 1 :(得分:0)
您的问题并不清楚您希望输出看起来像什么,但试试这个。您需要将项目设置为最左侧,因为POI和SalesOrders都连接到Project,但是您必须过滤掉未连接到其他两个表中至少一个的项目行。
SELECT *
FROM Project
LEFT OUTER JOIN SalesOrder On Project.PRJG_RecordID = SalesOrder.SOM_PRJG_DfltRecordID
LEFT OUTER JOIN POI On Project.PRJG_RecordID = POI.POI_PRJG_DfltRecordID
WHERE (POI.POI_PRJG_DfltRecordID IS NOT NULL AND Project.ProjectID is null)
OR (SalesOrder.SOM_PRJG_DfltRecordID IS NOT NULL AND Project.ProjectID is NOT null)