Flerdel-identifikatoren > “ a.surveyid ” kunne ikke bindes [lukket ]

Stengt. Dette spørsmålet er utenfor emnet . Det aksepteres for øyeblikket ikke svar.

Svar

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) 

Kommentarer

  • noen syntaksfeil Msg 102, nivå 15, tilstand 1, linje 4 Feil syntaks nær ' a '. Msg 102, nivå 15, tilstand 1, linje 6 Feil syntaks nær ') '
  • @smartestvega sjekk nå

Svar

Du må bruke surveyid ikke a.surveyid. Fordi surveyusers as a erklærer i sub-query slik at du ikke får tilgang til a.surveyid i hovedforespørselen.

Kommentarer

  • det er ingen undersøkelseskolonne i 360HRSurvey, derfor vil dette gi feil
  • @SmartestVEGA hva vil du at denne kolonnen skal returnere ? Tallet 80?
  • ja, jeg vil fjerne det der klausul om undersøkelses-ID i fremtiden, så jeg må returnere alle undersøkelses-IDene som er lagt til hovedfunksjonen
  • for at du trenger bruk join.

Svar

Årsaken til feilen ble forklart i Jaimin Sonis svar .

Siden du vil inkludere surveyid i resultatet, og dette er ikke et attributt til [360HRSurvey] -tabell, kan du bare bruke SELECT 80 AS surveyid, * ... for dette spørsmålet. Hvis surveyid ikke er fast skjønt – i et mer komplekst spørsmål – kan du bli med i tabellen som har dette attributtet. Forutsatt at denne tabellen er surveyusers og at det er en FOREIGN KEY fra [360HRSurvey] (sempid) at REFERENCES surveyusers(EmpCode), spørringen kan skrives om:

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

Svar

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 

Fikset det myslelf

Kommentarer

  • where deptid = 9 var ikke en del av det opprinnelige spørsmålet.
  • ja jeg har lagt til for en forretningslogikkendring takk

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *