Select anidados

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