sql >> Databáze >  >> RDS >> Sqlserver

Vícedílný identifikátor nelze na SQL Server 2008 svázat

Příklad kódu, který jste ukázali, měl elipsy a věřím, že to je to, co je v elipsách, co způsobuje potíže.

Máte:

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

Řekněme, že je to něco jako:

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

Jinými slovy smíchání syntaxe vnitřního spojení před ANSI 92 se syntaxí vnějšího spojení ANSI 92. Při testování na SQL Server 2005 se zdá, že alias R pro požadavky není vidět za čárkou, která odděluje R od ... ve vašem příkladu, a [příklad] jako X v mém. Následující však fungovalo:

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

nebo

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.

nebo můj oblíbený, protože se mi líbí syntaxe spojení 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. Reg. podpora transakcí pro jarní dávkovou úlohu na úrovni úlohy

  2. Hodnoty příznaku ODBC odbc.ini 'Option' konektoru MySQL

  3. Použití vyhledávacího indexu Solr jako databáze - je to špatně?

  4. sails-mysql:ER_NO_DB_ERROR:Není vybrána žádná databáze