需要SQL查询和连接帮助
我有四张桌子 文档列表:需要SQL查询和连接帮助,sql,join,Sql,Join,我有四张桌子 文档列表: DocumentID int DocumentDescription varchar(100) DocumentName varchar(100) DocumentTypeCode int Archive ud_DefaultBitFalse:bit DocumentStepID int DocumentID int StepLevelCode int DocumentAttachmentGenID int Document
DocumentID int
DocumentDescription varchar(100)
DocumentName varchar(100)
DocumentTypeCode int
Archive ud_DefaultBitFalse:bit
DocumentStepID int
DocumentID int
StepLevelCode int
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
文档步骤级别:
DocumentID int
DocumentDescription varchar(100)
DocumentName varchar(100)
DocumentTypeCode int
Archive ud_DefaultBitFalse:bit
DocumentStepID int
DocumentID int
StepLevelCode int
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
文档附件:
DocumentID int
DocumentDescription varchar(100)
DocumentName varchar(100)
DocumentTypeCode int
Archive ud_DefaultBitFalse:bit
DocumentStepID int
DocumentID int
StepLevelCode int
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
附件:
DocumentID int
DocumentDescription varchar(100)
DocumentName varchar(100)
DocumentTypeCode int
Archive ud_DefaultBitFalse:bit
DocumentStepID int
DocumentID int
StepLevelCode int
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
和附件
表中的数据。否则,这些列将不返回任何内容
我尝试使用左外部联接,但在将提交的列添加到查询时出现了问题。当我添加该列以查询它时,在该标志设置为true之前,停止返回任何数据。您留下的是DocumentAttachment吗
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,然后出现了类似“where DocumentAttachment.submitted=1”的内容
在这种情况下,我相信它不会返回任何内容,因为对于不存在documentattachment的行,Submited实际上是空的。因此,您可能需要将where语句更改为“where(documentattachment.submitted=1或documentattachment.submitted为null)
”
这还假设在填充DocumentAttachment时,默认情况下提交的值为0而不是空值(否则,您需要另一种方法来确定是否缺少DocumentAttachment)您能显示您尝试使用的查询吗?这正是我所需要的。我把提交的where子句放进去,显然它不能正常工作。谢谢。