Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: xGENiiiuS en 6 Abril 2016, 20:05



Título: ayuda con estas consultas¿?
Publicado por: xGENiiiuS en 6 Abril 2016, 20:05
Buenas estaba estudiando gbd y la verdad no consigo que salga lo que neceisot en las consultas paso los datos:
---------------------------------------- modelo relacional -------------------------------------------

provincias( codpro, nombre)
pueblos( codpue, nombre, provincia)
clientes( codcli, nombre, direccion, codpostal, pueblo)
vendedores( codven, nombre, direccion, codpostal, pueblo, jefe)
articulos(codart, descrip, precio, stock, stock_min )
facturas( codfac, fecha, cliente, vendedor, iva, dto )
lineas_fac(factura, linea, cant, articulo, precio, dto )

--------------------------------- enunciado consultas ----------------------------------------------

a)   Obtener el código de vendedor, nombre y el número de clientes a los que ha realizado factura cada uno de los vendedores. ( esta es la que esoty haciendo y no hay manera)

select v.codven "cod_vendedor", v.nombre "nombre_vendedor", count(f.cliente) "numero clientes"
from vendedores v, facturas f
where f.cliente = v.codven;
group by v.codven;

b)   El código y nombre de aquellas provincias en las que no hubo ventas de los vendedores residentes en dichas provincias durante el presente año.

c)   Código y nombre de aquellos clientes que han facturado a menos de 3 vendedores distintos residentes en su misma provincia.

d)   Mostrar el mejor vendedor de las provincias de Almería y Huelva para el año anterior al actual.



Título: Re: ayuda con estas consultas¿?
Publicado por: crisoof en 7 Abril 2016, 15:55
A)la primera respuesta esta mal, tienes que hacer un join entre 3 tablas, clientes, vendedores y facturas las condiciones de igualdad deben ser las correctas, tu estas igualando el cod_vendedor con el cod_cliente

b)la pregunta b tbn son 3 tablas, las tablas son vendedores, provincias y pueblos

c) tienes que cruzar las tablas cliente,factura,pueblo, provincia

d) aqui tengo una duda a que se refiere con linea_factura

dependiendo de la respuesta tendrias que cruzar vendedor,facturas,pueblo,provincia

o

vendedor,lineas_fac,facturas,pueblo,provincia


Exito en la resolucion, pregunta si no entiendes algo saludos


Título: Re: ayuda con estas consultas¿?
Publicado por: xGENiiiuS en 7 Abril 2016, 18:05
gracias la primera ya me ha salido :

a) select v.codven, v.nombre, count(f.cliente)
   from vendedores v, facturas f
   where v.codven = f.cliente
   group by v.codven

las demas probare luego mas tarde muchas gracias amigo :)


Título: Re: ayuda con estas consultas¿?
Publicado por: crisoof en 7 Abril 2016, 20:05
tu primera consulta esta mal, deberías igualar


Código:
    select v.codven,
           v.nombre,
           count(f.cliente)
      from vendedores v, facturas f
     where v.codven = f.VENDEDOR
  group by v.codven

la query que tu tienes no tiene bien la condicion, igualas v.codven con f.cliente

deberias igualar el codven con el codigo de vendedor en este caso vendedor de la tabla factura, si no es el mismo dato que en la tabla vendedor debes hacer el join que te indique antes, cruzar 3 tablas

tambien te aconsejaria uses para hacer un join los inner join para que puedas programar mas ordenado y no te compliques mas adelante

saludos