sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 でマルチパート識別子をバインドできませんでした

    あなたが示したコード例には楕円がありましたが、問題を引き起こしているのは楕円の中にあると思います.

    あなたが持っている:

    SELECT R.[ID], C.[name] AS [company], ...
    FROM [requests] AS R, ...
    LEFT OUTER JOIN [companies] AS C
    ON R.[company_id] = S.ID
    

    それが次のようなものだとしましょう:

    SELECT R.[ID], C.[name] AS [company], X.Field
    FROM [requests] AS R, [eXample] as X 
    LEFT OUTER JOIN [companies] AS C
    ON R.[company_id] = S.ID
    WHERE X.[request_id] = R.ID
    

    つまり、ANSI 92 以前の内部結合構文と ANSI 92 外部結合構文の混合です。 SQL Server 2005 でテストすると、リクエストのエイリアス R は、例では R と ... を区切るコンマを超えて表示されず、[eXample] は X として表示されます。ただし、以下は機能しました:

    SELECT R.[ID], C.[name] AS [company], X.Field
    FROM [eXample] as X, [requests] AS R 
    -- Requests and companies on the same side of the comma
    LEFT OUTER JOIN [companies] AS C
    ON R.[company_id] = S.ID
    WHERE X.[request_id] = R.ID
    

    または

    SELECT R.[ID], C.[name] AS [company], X.Field
    FROM [requests] AS R LEFT OUTER JOIN [companies] AS C
        ON R.[company_id] = S.ID, [eXample] as X 
    WHERE X.[request_id] = R.ID
    -- Yuck, I would hate to find this. Not at all sure from reading
    -- the code how it would work.
    

    ANSI 92 結合構文が好きなので、私のお気に入りです:

    SELECT R.[ID], C.[name] AS [company], X.Field
    FROM [requests] AS R
    INNER JOIN [eXample] as X ON X.[request_id] = R.ID
    LEFT OUTER JOIN [companies] AS C ON R.[company_id] = S.ID
    


    1. わずかな予算での高可用性-最小限の2ノードのMySQLGaleraクラスターの導入

    2. Postgresのあるデータベースから別のデータベースにテーブルをコピーします

    3. SQLLIKEとINを一緒に使用する

    4. Oracleでの大文字と小文字を区別しない検索