2013-08-22 80 views
-2

我有这样的代码:附近有语法错误“加入”

Select 
    C.ClientId 
    ,K.NameShort 
    ,C.SetId 
    ,C.CaseId 
    ,C.ClientCaseNumber 
    ,D.Name 
    ,Pay.Overpayment 
    from CaseDetails as C 
    where (C.ClientId = @ClientId or @ClientId IS NULL) and (C.SetId = @SetId or @SetId IS NULL) 

    join Client as K on C.ClientId = K.ClientId 
    join DocumentDetails as DD on C.CaseDetailsId = DD.CaseDetailsId 
    join PaymentDocumentHistory as Pay on DD.DocumentId = Pay.DocumentId 
    join DebtorDetails as D on C.CaseDetailsId = D.CaseDetailsId 

试图运行它,它给了我错误关于不正确的语法附近“加入”。不幸的是,我不知道为什么会出现这样的错误。

+1

看看t-sql'SELECT'语法[这里](http://technet.microsoft.com/en-us/library/ms189499.aspx) – AgentSQL

回答

7

JOIN s为的FROM子句的一部分。 WHERE子句位于(整个)FROM子句之后。

Select 
    C.ClientId 
    ,K.NameShort 
    ,C.SetId 
    ,C.CaseId 
    ,C.ClientCaseNumber 
    ,D.Name 
    ,Pay.Overpayment 
    from CaseDetails as C 
    join Client as K on C.ClientId = K.ClientId 
    join DocumentDetails as DD on C.CaseDetailsId = DD.CaseDetailsId 
    join PaymentDocumentHistory as Pay on DD.DocumentId = Pay.DocumentId 
    join DebtorDetails as D on C.CaseDetailsId = D.CaseDetailsId 
    where (C.ClientId = @ClientId or @ClientId IS NULL) and (C.SetId = @SetId or @SetId IS NULL) 
1

joinwhere之前。

from CaseDetails as C  
    join Client as K on C.ClientId = K.ClientId 
    join DocumentDetails as DD on C.CaseDetailsId = DD.CaseDetailsId 
    join PaymentDocumentHistory as Pay on DD.DocumentId = Pay.DocumentId 
    join DebtorDetails as D on C.CaseDetailsId = D.CaseDetailsId 
    where (C.ClientId = @ClientId or @ClientId IS NULL) and (C.SetId = @SetId or @SetId IS NULL) 
0

您的JOINS不合适。您已将JOIN放在WHERE子句之后。

Select C.ClientId 
    ,K.NameShort 
    ,C.SetId 
    ,C.CaseId 
    ,C.ClientCaseNumber 
    ,D.Name 
    ,Pay.Overpayment 
    from CaseDetails as C 
    join Client as K on C.ClientId = K.ClientId 
    join DocumentDetails as DD on C.CaseDetailsId = DD.CaseDetailsId 
    join PaymentDocumentHistory as Pay on DD.DocumentId = Pay.DocumentId 
    join DebtorDetails as D on C.CaseDetailsId = D.CaseDetailsId 
    where (C.ClientId = @ClientId or @ClientId IS NULL) and (C.SetId = @SetId or @SetId IS NULL)