Select rebelde.

04/02/2004 - 16:29 por Jose Antonio | Informe spam
Hola, tengo tres tablas, en la primera estan los clientes, en la segunda los
pedidos de estos clientes y en la tercera las lineas de estos pedidos.

Necesito saber con un select, los clientes cuyos pedidos incluyan lineas con
unos productos determinados.

Ejemplo:

Clientes Pedidos Lineas de Pedidos
1 1 P1
P2
P3
P4

2 2 P1
P3

3 3 P1
P2

En este caso. ¿Que clientes tienen en sus pedidos los productos P1 y P3.

El resultado seria El cliente 1 y el Cliente 2.


Saludos y Gracias.

Preguntas similare

Leer las respuestas

#11 Adrian D. Garcia
04/02/2004 - 21:54 | Informe spam
Pregunta de curioso nomas...
Porque no usas joins para resolverla en vez de los IN?

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Manuel" wrote in message
news:
/*Codigo sin probar*/

SELECT NombreCliente
FROM cliente
WHERE idcliente
IN (SELECT DISTINCT idcliente FROM pedidos WHERE idpedido
IN (SELECT DISTINCT idpedido FROM lineapedido WHERE producto in
('p1', 'p3')))

Espero que te sirva.

Saludos.



"Jose Antonio" escribió en el mensaje
news:
> Hola, tengo tres tablas, en la primera estan los clientes, en la segunda
los
> pedidos de estos clientes y en la tercera las lineas de estos pedidos.
>
> Necesito saber con un select, los clientes cuyos pedidos incluyan lineas
con
> unos productos determinados.
>
> Ejemplo:
>
> Clientes Pedidos Lineas de Pedidos
> 1 1 P1
> P2
> P3
> P4
>
> 2 2 P1
> P3
>
> 3 3 P1
> P2
>
> En este caso. ¿Que clientes tienen en sus pedidos los productos P1 y P3.
>
> El resultado seria El cliente 1 y el Cliente 2.
>
>
> Saludos y Gracias.
>
>


Respuesta Responder a este mensaje
#12 Jose Antonio
05/02/2004 - 13:50 | Informe spam
Gracias por la respuesta.


Gracias.
"Eladio Rincón" escribió en el mensaje
news:
Hola,

sería útil adjuntar el script de creación de tablas y datos de prueba;

puede ser que esto te sirva:

create table TusPedidos (
idCliente int not null , idPedido int primary key)
go

create table TusLineas (
idPedido int references TusPedidos ( idPedido ),
idProducto char(2) not null )
go

insert into tusPedidos select 1, 1
insert into tusPedidos select 2, 2
insert into tusPedidos select 3, 3

insert into TusLineas select 1, 'p1'
insert into TusLineas select 1, 'p2'
insert into TusLineas select 1, 'p3'
insert into TusLineas select 1, 'p4'


insert into TusLineas select 2, 'p1'
insert into TusLineas select 2, 'p3'


insert into TusLineas select 1, 'p1'
insert into TusLineas select 1, 'p2'


go

select distinct p.idCliente
from TusPedidos p
where exists ( select count(*) from TusLineas l
where l.idProducto in ( 'p1', 'p3' )
and p.idPedido = l.IdPedido having count(*) >= 2)



Eladio Rincón
MCAD, SQL Server MVP
http://www.siquelnet.com

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Jose Antonio" escribió en el mensaje
news:
Hola, tengo tres tablas, en la primera estan los clientes, en la segunda


los
pedidos de estos clientes y en la tercera las lineas de estos pedidos.

Necesito saber con un select, los clientes cuyos pedidos incluyan lineas


con
unos productos determinados.

Ejemplo:

Clientes Pedidos Lineas de Pedidos
1 1 P1
P2
P3
P4

2 2 P1
P3

3 3 P1
P2

En este caso. ¿Que clientes tienen en sus pedidos los productos P1 y P3.

El resultado seria El cliente 1 y el Cliente 2.


Saludos y Gracias.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida