A többrészes azonosítót > “ a.surveyid ” nem lehet lekötni [bezárva ]

Zárt. Ez a kérdés témán kívül van . Jelenleg nem fogadja el a válaszokat.

Válasz

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) 

Megjegyzések

  • néhány szintaxis hiba: Msg 102, 15. szint, 1. állapot, 4. sor Helytelen szintaxis a ' a ' közelében. 102. üzenet, 15. szint, 1. állapot, 6. sor Helytelen szintaxis ') közelében '
  • @smartestvega ellenőrizze most

Válasz

A surveyid nem a.surveyid. Mivel surveyusers as a deklarálja a következőben: sub-query, ezért nem férhet hozzá a a.surveyid fő lekérdezéshez. p>

Megjegyzések

  • a 360HRSurvey-ben nincs felmérési oszlop, így ez hibát fog okozni
  • @SmartestVEGA mit akarsz, hogy ez az oszlop visszatérjen ? A 80-as szám?
  • igen, a jövőben eltávolítom a felmérés azonosítójának záradékát, ezért vissza kell adnom a fő funkcióhoz csatolt összes felmérés azonosítóját
  • ehhez meg kell használja a csatlakozást.

Válasz

A hiba okát a Jaimin Soni válasza .

Mivel a surveyid -t be akarja venni az eredménybe, és ez nem a [360HRSurvey] tábla, csak a SELECT 80 AS surveyid, * ... t használhatja ehhez a lekérdezéshez. Ha a surveyid nem javítva – bonyolultabb lekérdezésben – csatlakozhat a táblához, amely rendelkezik ezzel az attribútummal. Feltéve, hogy ez a tábla surveyusers és FOREIGN KEY [360HRSurvey] (sempid) tól, hogy REFERENCES surveyusers(EmpCode), a lekérdezés átírható:

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

válasz

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 

Javítva a myslelf

Megjegyzések

  • A where deptid = 9 nem volt része az eredeti lekérdezésnek.
  • igen, az üzleti logika megváltoztatásához hozzáadtam a köszönetet

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük