Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con una consulta ! ! !

Estas en el tema de Ayuda con una consulta ! ! ! en el foro de Bases de Datos General en Foros del Web. create database ventas; use ventas; create table cliente ( id_cliente int, nombre char(50), primary key(id_cliente) ); create table compra ( id_compra int, id_cliente int, fecha ...
  #1 (permalink)  
Antiguo 04/09/2008, 18:24
Avatar de Quclii  
Fecha de Ingreso: julio-2008
Ubicación: Guadalajara
Mensajes: 76
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Ayuda con una consulta ! ! !

create database ventas;
use ventas;
create table cliente
(
id_cliente int,
nombre char(50),
primary key(id_cliente)
);

create table compra
(
id_compra int,
id_cliente int,
fecha date,
primary key(id_compra),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente)
);

create table articulo
(
id_articulo int,
nombre char(30),
precio DECIMAL(9,2),
primary key(id_articulo)

);

create table compra_to_articulo
(
id_compra int,
id_articulo int,
precio DECIMAL(9,2),
FOREIGN KEY (id_compra) REFERENCES compra(id_compra),
FOREIGN KEY (id_articulo) REFERENCES articulo(id_articulo)
);


insert articulo values(1,"condon",50.23);
insert articulo values(2,"camisa",150.99);
insert articulo values(3,"pantalon",250.25);

insert cliente values(1,"hector");
insert cliente values(2,"cholo");
insert cliente values(3,"menso");
insert cliente values(4,"yo");

insert compra values(1,1,"2008-10-02");
insert compra values(2,1,"2008-11-02");
insert compra values(3,1,"2008-09-02");
insert compra values(10,1,"2011-10-06");

insert compra values(4,2,"2008-07-05");
insert compra values(5,2,"2008-11-05");
insert compra values(6,2,"2008-12-07");

insert compra values(7,3,"2007-07-05");
insert compra values(8,3,"2009-11-05");
insert compra values(9,3,"2006-12-07");

insert compra_to_articulo values(1,1,50.23);
insert compra_to_articulo values(2,2,150.99);
insert compra_to_articulo values(3,3,250.25);

insert compra_to_articulo values(4,1,50.23);
insert compra_to_articulo values(5,2,150.99);
insert compra_to_articulo values(6,3,250.25);

insert compra_to_articulo values(7,1,50.23);
insert compra_to_articulo values(8,2,150.99);
insert compra_to_articulo values(9,3,250.25);

insert compra_to_articulo values(10,3,250.25);


Necesitamos una sentencia SQL que nos diga qué cliente ha tenido por lo menos una compra; de ser así necesitamos saber
el total de sus compras y la fecha del último movimiento. De no tener compra alguna, nada más se debe mostrar un guión.
Resultado esperado.

En una sola sentencia SQL que obtenga este resultado.

ia lo eh inten tado varias veces y no me sale porfas ayudenme
  #2 (permalink)  
Antiguo 04/09/2008, 18:53
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con una consulta ! ! !

Lo primero que tienes que hacer es una consulta con un join con todas las tablas que quieras...

SELECT nom_tabla1.nom_atributo, nom_tabla2.nom_atributo
FROM nom_tabla1
JOIN nom_tabla2
ON nom_tabla1.id_tabla1 = nom_tabla2.id_tabla1
WHERE nom_tabla1.nom_atributo = 'cliente_a_buscar';

si quieres vincular mas tablas, no se te olvide el JOIN y el ON y especificar el nombre de la tabla y el atributo de esa tabla

SELECT xxx.aaa, yyy.bbb, zzz.ccc
FROM zzz JOIN yyy ON zzz.id_zzz = yyy.id_zzz
JOIN xxx ON xxx.id_xxx = zzz.id_xxx;

Agur
  #3 (permalink)  
Antiguo 05/09/2008, 12:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ayuda con una consulta ! ! !

Prueba esta consulta.

Cita:
SELECT c.nombre, IFNULL( t1.totalcompras, '-' ) NºCOMPRAS, IFNULL( t1.fechault, '-' ) FECHAULTIMACOMPRA, IFNULL( t1.sumaprecio, '-' ) SUMATOTAL
FROM cliente c
LEFT JOIN (

SELECT id_cliente, count( * ) totalcompras, max( fecha ) AS fechault, SUM( ca.precio ) sumaprecio
FROM compra c
INNER JOIN compra_to_articulo ca ON ca.id_compra = c.id_compra
GROUP BY id_cliente
)t1 ON ( c.id_cliente = t1.id_cliente )
  #4 (permalink)  
Antiguo 05/09/2008, 15:36
 
Fecha de Ingreso: junio-2008
Ubicación: Tarija
Mensajes: 79
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con una consulta ! ! !

He realizado esta consulta en Access y devuelve lo que buscas:

Select Cliente.id_cliente,nombre,Iif(Count(Compra.id_comp ra)=0,"-",Count(Compra.id_compra))As Cantidad,Iif(Sum(compra_to_articulo.precio) Is Null,"-",Sum(compra_to_articulo.precio))As Monto,Iif(Max(Compra.fecha) Is Null,"-",Max(Compra.fecha))As UltimaFecha
From (Cliente Left Join Compra On Cliente.id_cliente=Compra.id_cliente)Left Join compra_to_articulo On Compra.id_compra=compra_to_articulo.id_compra
Group By Cliente.id_cliente,nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.