Die mehrteilige Kennung > “ a.surveyid ” konnte nicht gebunden werden [geschlossen ]

Geschlossen. Diese Frage ist nicht zum Thema . Derzeit werden keine Antworten akzeptiert.

Antwort

SELECT a.surveyid,* FROM [360HRSurvey] inner join ( SELECT a.EmpCode,a.surveyid FROM surveyusers a where a.surveyid = 80 and a.EmpCode NOT IN (SELECT p.EmpID FROM empsurveyselection p WHERE p.surveyid =80)) a on a.EmpCode=sempid where empid = ( SELECT empid from [360HRSurveyEmployee] where surveyid = 80) 

Kommentare

  • einige Syntaxfehler Meldung 102, Ebene 15, Status 1, Zeile 4 Falsche Syntax in der Nähe von ' a '. Meldung 102, Ebene 15, Status 1, Zeile 6 Falsche Syntax in der Nähe von ') '
  • @smartestvega Jetzt prüfen

Antwort

Sie müssen surveyid verwenden, nicht a.surveyid. Da surveyusers as a in sub-query deklariert ist, können Sie in der Hauptabfrage nicht auf a.surveyid zugreifen.

Kommentare

  • In 360HRSurvey gibt es keine Umfrage-ID-Spalte. Daher wird der Fehler
  • @SmartestVEGA ausgegeben. Was soll diese Spalte zurückgeben? ? Die Nummer 80?
  • Ja, ich werde diese where-Klausel der Umfrage-ID in Zukunft entfernen, daher muss ich alle Umfrage-IDs zurückgeben, die an die Hauptfunktion
  • angehängt sind, die Sie benötigen Verwenden Sie join.

Antwort

Der Grund für den Fehler wurde in Jaimin Sonis Antwort .

Da Sie surveyid in das Ergebnis aufnehmen möchten, ist dies kein Attribut des [360HRSurvey] Tabelle, Sie können einfach SELECT 80 AS surveyid, * ... für diese bestimmte Abfrage verwenden. Wenn die surveyid nicht ist In einer komplexeren Abfrage können Sie jedoch der Tabelle mit diesem Attribut beitreten. Angenommen, diese Tabelle ist surveyusers und es gibt eine FOREIGN KEY Ab [360HRSurvey] (sempid) REFERENCES surveyusers(EmpCode) kann die Abfrage neu geschrieben werden:

SELECT a.surveyid, hrs.* FROM [360HRSurvey] AS hrs JOIN surveyusers AS a ON a.EmpCode = hrs.sempid WHERE a.surveyid = 80 -- this condition can be altered or removed AND a.EmpCode NOT IN ( SELECT p.EmpID FROM empsurveyselection p WHERE p.surveyid = a.surveyid ) AND a.empid = ( -- unclear if it"s a.empid or hrs.empid SELECT hrsemp.empid FROM [360HRSurveyEmployee] AS hrsemp WHERE hrsemp.surveyid = a.surveyid ) ; 

Antwort

SELECT su.surveyid,b.* FROM surveyusers SU RIGHT JOIN (SELECT * FROM [360HRSurvey] where sempid NOT IN ( SELECT a.EmpCode FROM surveyusers a where a.EmpCode IN (SELECT p.EmpID FROM empsurveyselection p where deptid = 9 ) and empid IN ( SELECT empid from [360HRSurveyEmployee] ))) B ON su.EmpCode = b.sempid Order by surveyid desc 

hat es selbst behoben

Kommentare

  • Die where deptid = 9 war nicht Teil der ursprünglichen Abfrage.
  • Ja, ich habe es für eine Änderung der Geschäftslogik hinzugefügt, danke

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.