[英]SQL query with joins help needed
我有四個桌子。
DocumentList :
DocumentID int
DocumentDescription varchar(100)
DocumentName varchar(100)
DocumentTypeCode int
Archive ud_DefaultBitFalse:bit
DocumentStepLevel :
DocumentStepID int
DocumentID int
StepLevelCode int
DocumentAttachment :
DocumentAttachmentGenID int
DocumentStepID int
AttachmentGenID int
FacilityGenID int
Submitted ud_DefaultBitFalse:bit
附件 :
AttachmentGenId int
FileName varchar(255)
FileDescription varchar(255)
UploadDate ud_DefaultDate:datetime
DocumentData varbinary(MAX)
MimeType varchar(30)
Archive ud_DefaultBitFalse:bit
UpdateBy int
UpdateDate ud_DefaultDate:datetime
題:
我需要編寫一個查詢,以獲取以下各列。
DocumentList.[DocumentDescription]
DocumentList.[DocumentName]
DocumentStepLevel.[DocumentStepID]
DocumentStepLevel.[StepLevelCode]
DocumentAttachment.[DocumentAttachmentGenID]
DocumentAttachment.[FacilityGenID]
DocumentAttachment.[Submitted]
Attachment.[FileName]
Attachment.[FileDescription]
Attachment.[UploadDate]
查詢應從DocumentList
表返回特定步驟級別的數據。 當DocumentAttachment.[Submitted]
列設置為true時,它還應該返回DocumentAttachment
和Attachment
表中的數據。 否則,這些列將不返回任何內容。
我嘗試使用左外部聯接,但是當我向查詢添加Submitted列時發生問題。 當我添加該列進行查詢時,它將停止返回任何數據,直到該標志設置為true。
SELECT *
FROM documentStepLevel dsl
JOIN documentList dl
ON dl.documentId = dsl.documentId
LEFT JOIN
documentAttachment da
ON da.documentStepID = dsl.documentStepId
AND submitted = 1
LEFT JOIN
attachment a
ON a.attachmentGenId = da.attachmentGenId
WHERE dsl.stepLevelCode = @stepLevelCode
您是否仍是DocumentAttachment外部聯接?
很難確定地說沒有看到您當前的查詢,但是我想您已經外部加入了DocumentAttachment,然后有了類似“ where documentattachment.submitted = 1”的內容?
在這種情況下,我認為它不會返回任何文件,因為不存在文檔附件的行,submitted實際上為null。 因此,您可能需要將where語句更改為“ where (documentattachment.submitted = 1 or documentattachment.submitted is null)
”
這也假設在填充DocumentAttachment時,默認情況下,提交的值為0而不是null值(否則,您將需要使用其他方法來確定是否缺少DocumentAttachment)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.