2016-03-21 25 views
1

我創建了一個引用3個表的視圖。該視圖來自dbo.LoadedFiles表,我手動插入文件名和文件類型。 另外兩個是dbo.LandingPages和dbo.ExitPages。這兩個都有一個名爲LoadedFile_id的dbo.LoadedFiles ID的FOREIGN KEY引用列。查看顯示尚未導入的內容

我想要顯示哪個LoadedFile尚未導入到我的dbo.LandingPages和dbo.ExitPages表中。

這是我的代碼到目前爲止,我知道這是錯誤的,但只是讓你們有參考。

CREATE VIEW [dbo].[vw_FilesNotYetLoaded] 
AS 
    SELECT 
     lf.ID, 
     filename, 
     filetype 
    FROM JPStarter.dbo.LoadedFiles lf 
    JOIN JPStarter.staging.ExitPages AS ep ON lf.ID = ep.LoadedFile_id 
    JOIN JPStarter.staging.LandingPages AS lp ON lf.ID = lp.LoadedFile_id 
    WHERE lf.ID NOT IN (
      SELECT ID 
      FROM JPStarter.dbo.LoadedFiles 
     ) 
+2

閱讀有關[左聯接。(https://technet.microsoft.com/en-us/library/ms187518(V = SQL.105)的.aspx) –

回答

0

你根本不需要加入表格就可以得到想要的結果。請注意子查詢中的UNION運算符。

CREATE VIEW [dbo].[vw_FilesNotYetLoaded] 
AS 
SELECT 
    [ID] 
    ,[filename] 
    ,[filetype] 
FROM 
    [JPStarter].[dbo].[LoadedFiles] 
WHERE 
    [ID] NOT IN (
     SELECT 
      [LoadedFile_id] 
     FROM 
      [JPStarter].[staging].[ExitPages] 
     UNION 
     SELECT 
      [LoadedFile_id] 
     FROM 
      [JPStarter].[staging].[LandingPages] 
    ); 
+0

感謝您的答覆,這個工程。 – user6035236