Închis. Această întrebare este
off-topic . În prezent, nu acceptă răspunsuri.
Răspuns
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)
Comentarii
Răspuns
Trebuie să utilizați surveyid nu a.surveyid. Deoarece surveyusers as a declară în sub-query, astfel încât să nu puteți accesa a.surveyid în interogarea principală.
Comentarii
Răspuns
Motivul erorii a fost explicat în Răspunsul lui Jaimin Soni .
Deoarece doriți să includeți surveyid în rezultat și acesta nu este un atribut al [360HRSurvey] tabel, puteți utiliza doar SELECT 80 AS surveyid, * ... pentru această interogare specială. Dacă surveyid nu este fixat totuși – într-o interogare mai complexă – vă puteți alătura tabelului care are acest atribut. Presupunând că acest tabel este surveyusers și că există un FOREIGN KEY din [360HRSurvey] (sempid) că REFERENCES surveyusers(EmpCode), interogarea poate fi rescrisă:
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 ) ;
Răspuns
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
S-a remediat myslelf
Comentarii