aba*_*hev 5 t-sql sql-server inner-join sql-server-2008
我有2张桌子
requests(ID,company_id,amount)
companies(ID,name)
与FK约束(requests.company_id- > companies.id)
requests.company 可 NULL
如果没有指定公司,我需要获得所有请求并替换company_id为适当的公司name或将其留空.
我有下一个查询:
SELECT R.[ID], C.[name] AS [company], R.[amount], ...
FROM [requests] AS R, [companies] AS C, ...
WHERE R.[company_id] = C.[ID]
Run Code Online (Sandbox Code Playgroud)
它工作正常,直到company字段为NULL .
我试着做下一个:
SELECT R.[ID], C.[name] AS [company], ...
FROM [requests] AS R, ...
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID
Run Code Online (Sandbox Code Playgroud)
但得到了
无法绑定多部分标识符"R.company_id"
ON子句移位中字段的错误相同.我究竟做错了什么?
你展示的代码示例有省略号,我相信它是导致麻烦的省略号中的内容.
你有:
SELECT R.[ID], C.[name] AS [company], ...
FROM [requests] AS R, ...
LEFT OUTER JOIN [companies] AS C
ON R.[company_id] = S.ID
Run Code Online (Sandbox Code Playgroud)
让我们说这就是:
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
Run Code Online (Sandbox Code Playgroud)
换句话说,将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
Run Code Online (Sandbox Code Playgroud)
要么
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.
Run Code Online (Sandbox Code Playgroud)
或者我最喜欢的,因为我喜欢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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36846 次 |
| 最近记录: |