Flerdelt identifikator > “ a.surveyid ” kunne ikke bindes [lukket ]

Lukket. Dette spørgsmål er uden for emnet . Det accepteres i øjeblikket 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

  • nogle syntaksfejl Msg 102, niveau 15, tilstand 1, linje 4 Forkert syntaks nær ' a '. Msg 102, niveau 15, tilstand 1, linje 6 Forkert syntaks nær ') '
  • @smartestvega tjek nu

Svar

Du skal bruge surveyid ikke a.surveyid. Fordi surveyusers as a erklærer i sub-query, så du ikke kan få adgang til a.surveyid i hovedforespørgslen.

Kommentarer

  • der er ingen surveyid-kolonne i 360HRSurvey, derfor vil dette give fejl
  • @SmartestVEGA hvad vil du have, at denne kolonne skal returnere ? Nummeret 80?
  • ja, jeg fjerner det, hvor klausul om undersøgelses-id i fremtiden, så jeg har brug for at returnere alle undersøgelses-id, der er tilføjet til hovedfunktionen
  • for at du skal brug join.

Svar

Årsagen til fejlen blev forklaret i Jaimin Sonis svar .

Da du vil medtage surveyid i resultatet, og dette er ikke en attribut for [360HRSurvey] tabel, kan du bare bruge SELECT 80 AS surveyid, * ... til denne særlige forespørgsel. Hvis surveyid ikke er løst dog – i en mere kompleks forespørgsel – kan du slutte dig til tabellen, der har denne attribut. Forudsat at denne tabel er surveyusers, og at der er en FOREIGN KEY fra [360HRSurvey] (sempid) at REFERENCES surveyusers(EmpCode), kan forespørgslen omskrives:

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 

Fixed it myslelf

Kommentarer

  • where deptid = 9 var ikke en del af den oprindelige forespørgsel.
  • ja jeg er tilføjet for en ændring af forretningslogik tak

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *