SUB CONSULTAS EN SQL

Respuesta de
a
Usuario
Buenas;
Me gustaría que me enseñéis como usar subconsultas en SQL, la sintaxis a emplear y eso..
Mil gracias
Avatar
Experto
La definición de subconsulta sería aquella consulta incluida dentro de una cláusula WHERE o HAVING de otra consulta. A veces, para expresar ciertas condiciones no hay más remedio que obtener el valor que buscamos como resultado de una consulta.
Por ejemplo supongamos que tenemos una tabla de proyectos que incluye el precio y queremos sacar los datos de los proyectos con un precio mayor.
SELECT codigo_proyecto, nombre_proyecto
FROM proyectos
WHERE precio = (SELECT MAX(precio)
                FROM proyectos
);
A efectos prácticos, piensa que un subconsulta te puede devolver:
a) 1 valor o un conjunto de valores, por lo que puedes incluir en cualquier condición en la que sustituyas un valor por la subconsulta (ejemplo anterior) o un conjunto de valores por la subconsulta (con un IN):
select * 
 from Category 
where CategoryID not IN (select CategoryID 
                           from Product 
                          where CategoryID is not null
);
b) Una tabla, por lo que podrías sustituir una tabla por una subconsulta si la necesitaras...
select  max(t.Cantidad) as Maximo
     , max(t.ProductID) as ProductID
  from
 (select d.ProductID
      , sum(d.Quantity) as Cantidad
   from OrderDetail d
group by d.ProductID
) t;
Saludos.
Usuario
Hola, yo lo he hecho más o menos así, pero me dan error las subconsulas, me dice que hay un problema con la sintaxis del from, me refiero al ejemplo en el que me devuelve una tabla... ¿sabes por qué podría ser?
Muchas Gracias
Avatar
Experto
Hola, ¿podrías pegar un de tus consultas o una similar? Los ejemplos que te pegado arriba son correctos sintácticamente y han sido probados.
Por tu comentario creo que estás intentando una consulta similar a la última. Y el error más frecuente suele tener que ver con los paréntesis o los alias.
Saludos