SQL在匹配值时从多个表中选择

时间:2013-10-02 15:33:56

标签: sql sql-server

我正在尝试使用下面的SQL语句从3个表中检索数据。我在[aren1002]附近遇到语法错误。

select
holiday_notes.*,
HOLIDAY_REF.holiday_name as holiday_name from [aren1002].[HOLIDAY_NOTES]
left join [aren1002].[HOLIDAY_REF] on holiday_notes.holiday_id=HOLIDAY_REF.holiday_id

[aren1002].[lookup].lookup_desc as type_desc from [aren1002].[HOLIDAY_NOTES]
left join [aren1002].[lookup] on holiday_notes.[type]=lookup.lookup_id

where [HOLIDAY_NOTES].delete_date is null order by [HOLIDAY_NOTES].create_date desc

我正在尝试从HOLIDAY_REF添加holiday_name列,从第二个表(lookup)添加type_desc。我不完全确定如何构建声明。

3 个答案:

答案 0 :(得分:3)

您选择的列需要在查询的SELECT部分后立即放置,然后将FROM子句与任何连接条件一起放在下面。之后,您可以放置​​WHERE子句。

select
holiday_notes.*,
HOLIDAY_REF.holiday_name as holiday_name,
[aren1002].[lookup].lookup_desc,
[aren1002].[lookup].type_desc

from [aren1002].[HOLIDAY_NOTES]
left join [aren1002].[HOLIDAY_REF] on holiday_notes.holiday_id=HOLIDAY_REF.holiday_id
left join [aren1002].[lookup] on holiday_notes.[type]=lookup.lookup_id
where [HOLIDAY_NOTES].delete_date is null order by [HOLIDAY_NOTES].create_date desc

答案 1 :(得分:1)

你还有一个额外的FROM

试试这个

select
holiday_notes.*,
HOLIDAY_REF.holiday_name as holiday_name,
[aren1002].[lookup].lookup_desc as type_desc
 from [aren1002].[HOLIDAY_NOTES]
left join [aren1002].[HOLIDAY_REF] on holiday_notes.holiday_id=HOLIDAY_REF.holiday_id
left join [aren1002].[lookup] on holiday_notes.[type]=lookup.lookup_id
where [HOLIDAY_NOTES].delete_date is null order by [HOLIDAY_NOTES].create_date desc

select语句通常遵循以下模式: SELECT 必填字段 FROM (可选)JOIN 将语句加入其他表 {{1 } 条件

答案 2 :(得分:0)

我不是sql guru,而且我不是一个可以快速设置测试的系统,所以这可能是完全错误的。

但我很确定你应该先做所有的SELECT,然后指定FROM和JOIN。

所以我认为你想要的东西是:

选择 holiday_notes。*,HOLIDAY_REF.holiday_name作为holiday_name,[aren1002]。[lookup] .lookup_desc as type_desc 来自[aren1002]。[HOLIDAY_NOTES] holiday_notes.holiday = HOLIDAY_REF.holiday_id左联接[aren1002]。[HOLIDAY_REF] left join [aren1002]。[lookup] on holiday_notes。[type] = lookup.lookup_id 其中[HOLIDAY_NOTES] .delete_date为空 按[HOLIDAY_NOTES] .create_date desc

排序