Sql 关键字“join”附近的语法不正确
我的以下查询导致错误: 关键字“join”附近的语法不正确 我不知道为什么它会导致那个错误 根据gordon的回答,我又为emp_添加了一个左连接,但它不起作用Sql 关键字“join”附近的语法不正确,sql,sql-server-2005,Sql,Sql Server 2005,我的以下查询导致错误: 关键字“join”附近的语法不正确 我不知道为什么它会导致那个错误 根据gordon的回答,我又为emp_添加了一个左连接,但它不起作用 我认为您想要的查询更像这样: Select top 1 a.mkey,emp_received , a.mkey, cd.type_desc as DOC_TYPE, a.doc_no as INWARD_NO, cr.type_desc as dept_received, cr.type_desc as
我认为您想要的查询更像这样:
Select top 1 a.mkey,emp_received ,
a.mkey, cd.type_desc as DOC_TYPE, a.doc_no as INWARD_NO,
cr.type_desc as dept_received, cr.type_desc as EMP_RECEIVED,
convert(varchar(255), a.doc_date,103) as date,
a.to_user, a.No_of_pages, Ref_No,
e.emp_name as NAME,
coalesce(e.Email_Id_Official, 'test@test.com') as EMAILID
from inward_doc_tracking_hdr a left join
type_mst_a cd
on a.doc_type = cd.master_mkey left join
type_mst_a cr
on a.dept_received = cr.master_mkey left join
emp_mst e
on a.emp_received = e.mkey
where a.emp_received is not null and
a.mkey = (select mkey
from inward_doc_tracking_hdr aa
where doc_no = 'IW/16/97'
);
注:
直接的问题是左连接和左连接。and导致语法错误。
您有两个具有相同别名的表。这是不允许的。
您需要注意哪些列来自哪些表;我猜得很好。
无论何时在SQL Server中使用varchar,都必须包含长度。默认长度因上下文而异,如果您懒惰,可能在某个时候遇到难以调试的错误。
定义列别名时用作。
和left join:这不是SQL构造。通过删除并仍然获得错误,这是由于a.emp\u received=qr.master\u mkey上的left join类型导致的。您指的是qr,您可能指的是cr。请参阅Gordon的代码。@HoneyBadger:也尝试过cr,但仍然不起作用。请更具体一些。“不工作”是什么意思?你有错误吗?如果是,你的错误是什么?我没有一个水晶球告诉我你的查询是如何运行的。我想为emp_received再添加一个desc,所以我可以在a.doc_type=cd.master_mkey left join type_mst_a crsee我的问题了解更多更新,我尝试了一个参数,但没有working@NK . . . 我不确定新的查询应该做什么。你应该问一个新问题。
Select top 1 a.mkey,
cd.type_desc as DOC_TYPE, a.doc_no as INWARD_NO,
cr.type_desc as DEPT_RECEIVED, qr.type_desc as EMP_RECEIVED,
convert(varchar(255), a.doc_date,103) as date,
a.to_user, a.No_of_pages, Ref_No,
e.emp_name as NAME,
coalesce(e.Email_Id_Official, 'test@test.com') EMAILID
from inward_doc_tracking_hdr a left join
type_mst_a cd
on a.doc_type = cd.master_mkey left join
type_mst_a cr
on a.emp_received = qr.master_mkey left join
type_mst_a st
on a.dept_received = cr.master_mkey left join
emp_mst e
on a.emp_received = e.mkey
where a.emp_received is not null and
a.mkey = (select mkey
from inward_doc_tracking_hdr aa
where doc_no = 'IW/16/97'
);
Select top 1 a.mkey,emp_received ,
a.mkey, cd.type_desc as DOC_TYPE, a.doc_no as INWARD_NO,
cr.type_desc as dept_received, cr.type_desc as EMP_RECEIVED,
convert(varchar(255), a.doc_date,103) as date,
a.to_user, a.No_of_pages, Ref_No,
e.emp_name as NAME,
coalesce(e.Email_Id_Official, 'test@test.com') as EMAILID
from inward_doc_tracking_hdr a left join
type_mst_a cd
on a.doc_type = cd.master_mkey left join
type_mst_a cr
on a.dept_received = cr.master_mkey left join
emp_mst e
on a.emp_received = e.mkey
where a.emp_received is not null and
a.mkey = (select mkey
from inward_doc_tracking_hdr aa
where doc_no = 'IW/16/97'
);