Moniosaista tunnistetta > “ a.surveyid ” ei voitu sitoa [suljettu ]

Suljettu. Tämä kysymys on aiheen ulkopuolella . Se ei tällä hetkellä hyväksy vastauksia.

vastaus

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) 

kommentit

  • joitain syntaksivirheitä Msg 102, taso 15, tila 1, rivi 4 Virheellinen syntaksin lähellä ' a '. Viesti 102, taso 15, tila 1, rivi 6 Virheellinen syntakse ') '
  • @smartestvega tarkista nyt

vastaus

Sinun on käytettävä surveyid ei a.surveyid. Koska surveyusers as a ilmoita sub-query -viestissä, et voi käyttää a.surveyid -pääkyselyssä. p>

kommentit

  • 360HRSurvey-palvelussa ei ole surveyid-saraketta, joten tämä antaa virheen
  • @SmartestVEGA mitä haluat tämän sarakkeen palauttavan ? Luku 80?
  • kyllä, poistan tulevaisuudessa kyselytunnuksen lausekkeen, joten minun on palautettava kaikki pääfunktioon liitetyt kyselytunnukset
  • sitä varten käytä liittymistä.

Vastaa

Virheen syy selitettiin kohdassa Jaimin Sonin vastaus .

Koska haluat sisällyttää tulokseen surveyid ja tämä ei ole [360HRSurvey] -taulukko, voit käyttää SELECT 80 AS surveyid, * ... -taulukkoa tässä kyselyssä. Jos surveyid ei ole korjattu – monimutkaisemmalla kyselyllä – voit liittyä taulukkoon, jolla on tämä määrite. Olettaen, että tämä taulukko on surveyusers ja että FOREIGN KEY alkaen [360HRSurvey] (sempid) että REFERENCES surveyusers(EmpCode), kysely voidaan kirjoittaa uudestaan:

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

vastaus

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 

Korjasi sen myslelf

Kommentit

  • where deptid = 9 ei ollut osa alkuperäistä kyselyä.
  • kyllä lisäsin liiketoimintalogiikan muutoksen kiitos

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *