FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Consultas
Hola, tengo unas dudas sobre unas consultasen sql, si alguien me pueda hechar una manita, agradezco eternamente, el único problema es que necesito para hoy ¡!
Tengo una base de datos llamada COMERCIO que posee 5 tablas: CENTROS Código (clave primaria) Ciudad Zona CLIENTES Nif (clave primaria) Razon_social Dirección Teléfono Descuento PEDIDOS Numero (clave primaria) Cod_producto Fecha Nif_cliente Cod_vendedor Unidades PRODUCTOS Codigo (clave primaria) Componente Descripción Precio Stock VENDEDORES Codigo (clave primaria) Nombre Edad Cod_centro Ahora necesito las siguientes consultas: 1. ¿En qué ciudades se han vendido placas base? ¿Cuántas unidades y de qué tipo (descripción) se han vendido? Ordena la salida por ciudad. 2..- Queremos premiar a aquellos clientes que nos han comprado impresoras por un valor mayor a 80 euros. Por cuestiones de organización interna nos interesa saber a qué zonas pertenecen esos clientes, quien ha sido el vendedor que ha realizado el pedido y qué tipo de impresora han comprado. A su vez también necesitamos el número de teléfono del cliente para llamarle y darle la enhorabuena. Queremos que los datos aparezcan ordenados de mayor a menor por el total pagado por cada cliente. 3.- El director de la empresa quiere un listado alfabético con todos los vendedores y el número de unidades vendidas por cada vendedor (incluso para aquellos vendedores que no tuvieron nunca ningún pedido). 4. Inventar una consulta bastante creativa. Gracias ! |
#2
|
|||
|
|||
veamos, lo primero de todo aconsejarte un libre de SQL, ya que no son demasiado complicadas estas consultas
1.- dependerá si lo que sabemos es la descriocion o el codigo del producto Código:
select c.ciudad, r.codigo, r.descripcion, count(*) from pedidos p inner join productos r on r.codigo = p.cod_prod inner join vendedores v on v.codigo = p.cod_vend inner join centros c on c.codigo = v.cod_centro where r.descripcion like '%placas base%' group by c.ciudad, r.codigo, r.descripcion order by c.cuidad Código:
select c.razon_social, c.telefono, v.nombre, t.zona, sum(p.unidades * s.precio) from pedidos p inner join clientes c on c.nif = p.nif_cli inner join vendedores v on v.codigo = p.cod_vend inner join centros t on t.codigo = v.cod_centro inner join productos s on s.codigo = p.cod_prod where s.descripcion like '%impresora%' group by c.razon_social, c.telefono, v.nombre, t.zona having sum(p.unidades * s.precio) > 80 order by 5 Código:
select v.nombre, sum(p.unidades) from vendedores v left outer join pedidos p on p.cod_vend = v.codigo order by v.nombre PD: los resultados no han sido probados, así que no se garantiza el 100% de su funcionamiento |
|
|
|