Select anidados
Para poder listar datos de una tabla pero con criterios complejos de otra(s) podemos usar un Select dentro de otro, lo que llamaremos Select anidados.
Listar clientes con facturación superior a 3000 euros
Select * from Client where cod IN (select CodC from Resu Where Year(fecha)=2016 group by Codc having sum(total)>3000) order by cod
La misma consulta pero con JOIN
Select Resu.CodC,client.Nom from resu left join client on resu.codc=client.cod Where year(fecha)=2016 group by CodC,Nom having sum(total)>3000 order by codc
Obviamente la primera es mejor ya que podemos listar de forma más sencilla los campos que necesitemos de la tabla Client (en el ejemplo todos *)
Otros ejemplos:
Select * From PRENDUSU Where Left(PRENDUSU .COD,3)=’344′ And DNI In (Select DNI From USUARIOS Where Left(COD,3)=’344′)
Select * From PRENDUSU Where Left(PRENDUSU .COD,3)=’344′ And NOT DNI In (Select DNI From USUARIOS Where Left(COD,3)=’344′)