Tengo una consulta que devuelve algunas identificaciones de empleado y la consulta se ve a continuación

select E.EmpID as EmployeeID
from tblEmployee E
where EmpRole in (1,2,3) and E.Test like '%PS%'

Tengo otra consulta que se parece a la siguiente

Select E.EmpID and EmployeeID, B.CountryId, B.CountryName, B.StateId, 
B.StateName
from tblEmployeeInfo E
inner join tblTest B
where E.StateId = B.StateId and E.CountryId = B.CountryId

Mi requisito es que la segunda consulta debe devolver datos solo de aquellos empleados que resultaron en la primera consulta ...

Ambas son tablas diferentes, ¿cómo puedo unir estas dos?

0
user3198688 17 oct. 2018 a las 08:45

2 respuestas

La mejor respuesta

Use un Select dentro de la cláusula IN

Select E.EmpID as EmployeeID, B.CountryId, B.CountryName, B.StateId, 
B.StateName
from tblEmployeeInfo E
inner join tblTest B
where E.StateId = B.StateId and E.CountryId = B.CountryId
and E.EmpID IN (select E.EmpID
    from tblEmployee E
    where EmpRole in (1,2,3) and E.Test like '%PS%'
)
0
Richard Hubley 17 oct. 2018 a las 05:48

Podrías hacer otro JOIN en tblEmployee:

Select E.EmpID and EmployeeID, B.CountryId, B.CountryName, B.StateId, 
B.StateName
from tblEmployeeInfo E
JOIN tblTest B ON E.StateId = B.StateId and E.CountryId = B.CountryId
JOIN tblEmployee E2 ON E.EmpID = E2.EmpID AND E2.EmpRole in (1,2,3) AND E2.Test like '%PS%'
0
iSR5 17 oct. 2018 a las 05:48