2016-03-21 15 views
1

3つのテーブルを参照するビューを作成しています。ビューは、手動でファイル名とファイルタイプを挿入するdbo.LoadedFilesテーブルからのものです。 他の2つは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

関連する問題