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