Flerdelsidentifieraren > “ a.surveyid ” kunde inte bindas [stängd ]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Stängt. Denna fråga är utanför ämnet . För närvarande accepteras inte 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

  • några syntaxfel Msg 102, nivå 15, tillstånd 1, rad 4 Felaktig syntax nära ' a '. Msg 102, nivå 15, tillstånd 1, rad 6 Felaktig syntax nära ') '
  • @smartestvega kolla nu

Svar

Du måste använda surveyid inte a.surveyid. Eftersom surveyusers as a deklarerar i sub-query så att du inte kan komma åt a.surveyid i huvudfrågan.

Kommentarer

  • det finns ingen kolumn för surveyid i 360HRSurvey därför kommer detta att ge fel
  • @SmartestVEGA vad vill du att den här kolumnen ska returnera ? Siffran 80?
  • ja, jag kommer att ta bort den där klausulen om enkät-id i framtiden, så jag måste returnera allt enkät-id som läggs till huvudfunktionen
  • för att du behöver använd join.

Svar

Orsaken till felet förklarades i Jaimin Sonis svar .

Eftersom du vill inkludera surveyid i resultatet och detta är inte ett attribut för [360HRSurvey] tabell kan du bara använda SELECT 80 AS surveyid, * ... för just den här frågan. Om surveyid inte är fast men – i en mer komplex fråga – kan du gå med i tabellen som har detta attribut. Förutsatt att den här tabellen är surveyusers och att det finns en FOREIGN KEY från [360HRSurvey] (sempid) att REFERENCES surveyusers(EmpCode) kan frågan skrivas 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 

Fixade det myslelf

Kommentarer

  • where deptid = 9 ingick inte i den ursprungliga frågan.
  • ja jag har lagt till för en affärslogikändring tack

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *