2014-07-08 74 views
0

我需要將同一個列名上的兩個表('SalesOrder'和'POI')連接到一個表('Project') ('Project.PRJG_RecordID'),但'Project'表中'ProjectID'列中的條件在'POI'中必須爲null,'SalesOrder'中不能爲null。你怎麼寫這個語法?SQL - 第三個表連接到兩個表,但第三個表中的列條件不同

我來最接近的是:

(編輯整理時間:原帖):

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是唯一標識符,而Project.ProjectID類型爲nvarchar(25)。

怎麼樣?

+1

wheres'POI' table? – dognose

+0

較早的錯誤查詢;進行編輯。我希望上面更容易理解我的問題。 – user3769185

回答

0

你的問題不清楚你想要輸出看起來像什麼,但試試這個。您需要將項目放在最左邊,因爲POI和SalesOrders都加入到Project中,但是您必須過濾掉不加入其他兩個表中至少一個的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) 
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 
相關問題