2016-05-30 13 views
-1
クエリ以下

私は、エラーの原因となっている「参加」:不正な構文のキーワードの近くに

Incorrect syntax near the keyword 'join'.

Select top 1 
    a.mkey, emp_received, a.mkey, 
    c.type_desc DOC_TYPE, a.doc_no INWARD_NO, 
    c.type_desc dept_received, c.type_desc EMP_RECEIVED, 
    convert(varchar, a.doc_date, 103) date, 
    a.to_user, a.No_of_pages, Ref_No, c.type_desc, 
    e.emp_name NAME, 
    ISNULL(e.Email_Id_Official, '[email protected]') EMAILID 
from 
    inward_doc_tracking_hdr a 
left join 
    type_mst_a c on a.doc_type = c.master_mkey 
       and 
left join 
    type_mst_a c on a.dept_received = c.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') 

が、私はそれがゴードンの答えを1として、そのエラー

を引き起こしている理由は分からないが、 emp_receivedにもう一度left joinを追加しましたが、動作しません。

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, '[email protected]') 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' 
        ); 
+3

'とleft join':これはSQL構造体ではありません。 –

+0

'と'まだエラーを取得して削除することによって – BNN

+0

それは 'の左の結合type_mst_a crのためにa.emp_received = qr.master_mkey'です。あなたは 'qr'を参照しています。おそらく' cr'を意味します。 (ゴードンのコードを参照してください) – HoneyBadger

答えて

3

私はあなたが欲しいクエリはもっと​​このようなものですと思う:

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, '[email protected]') 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 left joinです。 andは構文エラーを引き起こします。
  • 同じエイリアスを持つ2つのテーブルがあります。それは許されない。
  • どの列がどのテーブルから来るかを注意する必要があります。私は良い推測をした。
  • varchar()をSQL Serverで使用する場合は、必ず長さを含めます。デフォルトの長さは文脈によって異なります。もしあなたが怠け者であれば、ある時点でデバッグするのが難しいエラーに遭遇するでしょう。
  • カラムエイリアスを定義するときはasを使用してください。
+0

'emp_recevied'にもう1つのdescを追加したいのですが、' a.doc_type = cd.master_mkey left joinに追加することはできますか? type_mst_a cr' – BNN

+0

もう一つのパラメータを試しました。動作していません – BNN

+0

@NK。 。 。新しいクエリが何をしているのかよく分かりません。あなたは新しい質問をしたはずです。 –

関連する問題