0

このストアド プロシージャを使用して、ドキュメントが保留中であることを示します

create procedure b
as
  select         
     dbo.DocumentInfo.DocID, dbo.DocumentInfo.DocName, 
     dbo.DocumentInfo.Uploadfile, dbo.DocType.Doc      Type,
     dbo.Department.DepType, ApproveType.ApproveType
 from 
     dbo.DocumentInfo 
 left join 
     dbo.DocType on dbo.DocumentInfo.DocTypeID = dbo.DocType.DocTypeID 
 left join 
     dbo.Department on dbo.DocumentInfo.DepID = dbo.Department.DepID 
 inner join      
     ApproveType on DocumentInfo.ApproveID = ApproveType.ApproveID 
                 and (ApproveType.ApproveID = 3)

しかし、このクエリをチェックすると、ドキュメントを表示できません..

問題はどこだ?

4

1 に答える 1

0

あなたの問題は、結合がデータを除外しているテーブルで直接結合 (INNER JOIN) していることです。したがって、 table の列にデータが含まれていないか、ApproveIDtableに columnDocumentInfoに一致する行がありません。ApproveTypeApproveID

このストアド プロシージャをこのように使用する場合は、結合を誤って使用しているように見えます。次のように、テーブル エイリアスの使用を検討することもできます。

CREATE PROCEDURE b
AS
    SELECT  di.DocID, 
            di.DocName, 
            di.Uploadfile, 
            dt.DocType,
            d.DepType, 
            at.ApproveType
    FROM    DocumentInfo di
        LEFT OUTER JOIN
            DocType dt ON dt.DocTypeID = di.DocTypeID
        LEFT OUTER JOIN 
            Department d ON d.DepID = di.DepID
        LEFT OUTER JOIN
            ApproveType at ON at.ApproveID = di.ApproveID 
   AND  at.ApproveID = 3
于 2013-10-16T12:44:35.750 に答える