2016-05-30 11 views
-1

Meine unten Abfrage verursacht einen Fehler:falsche Syntax nahe dem Schlüsselwort ‚join‘

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') 

Ich weiß nicht, warum es verursacht wird, dass Fehler

Per Gordons Antwort, ich habe noch einen linken Flügel emp_received beitreten, aber es funktioniert nicht

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

'und Links Join': das ist kein SQL-Konstrukt. –

+0

Durch das Entfernen von 'und' immer noch Fehler – BNN

+0

Das ist wegen 'linken Join type_mst_a cr auf a.emp_received = qr.master_mkey'. Sie beziehen sich auf 'qr', Sie meinen wahrscheinlich' cr'. (Siehe Gordon's Code.) – HoneyBadger

Antwort

3

Ich denke, die Abfrage, die Sie wollen mehr ist wie folgt:

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' 
       ); 

Hinweise:

  • Das unmittelbare Problem ist and left join. Die and verursacht einen Syntaxfehler.
  • Sie haben zwei Tabellen mit demselben Alias. Das ist nicht erlaubt.
  • Sie müssen vorsichtig sein, welche Spalten aus welchen Tabellen kommen; Ich habe es gut geschätzt.
  • Wenn Sie in SQL Server varchar() verwenden, geben Sie immer eine Länge ein. Die Standardlänge variiert je nach Kontext und wenn Sie faul sind, werden Sie wahrscheinlich nur einen schwer zu debuggenden Fehler erleiden.
  • Verwenden Sie as beim Definieren von Spaltenaliasnamen.
+0

Ich möchte eine weitere Beschreibung für 'emp_recevied' hinzufügen, so kann ich hinzufügen, dass vor' auf a.doc_type = cd.master_mkey linken Join type_mst_a cr' – BNN

+0

siehe meine Frage für mehr Update, ich versuchte für einen weiteren Parameter, aber es ist funktioniert nicht – BNN

+0

@NK. . . Ich bin nicht sicher, was die neue Abfrage tun soll. Du hättest eine neue Frage stellen sollen. –

Verwandte Themen