Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: m@o_614 en 4 Abril 2014, 06:54 am



Título: subconsultas
Publicado por: m@o_614 en 4 Abril 2014, 06:54 am
Saludos, tengo dos tablas en postgres que son la siguientes:

partidas_pedidos con sus campos: id_pedido(Pk),fecha_pedido,cantidad,producto(fK),cliente(Fk)

y info_clientes: nombre,apellido,id_cliente(Pk)

y me piden que haga una consulta:

Mostrar IDs de los clientes, sin repetirse, que en algun pedido hayan comprado mas de dos ejemplares de un mismo producto(cantidad) durante 1999

SELECT DISTINCT id_cliente
FROM info_clientes
WHERE id_cliente=(SELECT cliente FROM partidas_pedidos WHERE cantidad > 2 AND fecha_pedido LIKE '1999%');

pero me aparece un error que dice: subconsulta utilizada como expresion retorno mas de un registro y no entiendo por qué me sale esto


Título: Re: subconsultas
Publicado por: 1mpuls0 en 4 Abril 2014, 22:29 pm
No estoy muy seguro, pero creo que sería así.

Código
  1. SELECT A.cliente, A.total FROM (
  2. SELECT cliente, SUM(cantidad) AS total FROM  partidas_pedidos WHERE fecha_pedido LIKE '1999%' GROUP BY cliente, producto) AS A WHERE A.total>2
  3.  

Es que tengo duda con lo que mencionas de "sin repetirse" y si el cliente compró más de dos productos diferentes en ese periodo?
Por ejemplo si el cliente 1 compró 3 cantidades del producto 1 y ademas compro 5 cantidades del producto 7
En este caso si debería repetirse el id del cliente no? es lo más lógico.

De ser así la consulta que acabo de hacer no sirve para nada de eso xD

En ese caso te serviría esto.

Código
  1. SELECT C.cliente, C.producto FROM (
  2. SELECT cliente, SUM(cantidad), producto FROM  partidas_pedidos WHERE fecha_pedido LIKE '1999%' GROUP BY cliente, producto HAVING SUM(cantidad)>2) AS C
  3.