Autor Tema: Búsquedas con mysql

0 Usuarios y 1 Visitante están viendo este tema.

12 Enero, 2014, 07:49 pm
Leído 1365 veces

xamo

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 373
  • Karma: +0/-0
  • Sexo: Femenino
Hola, espero que me podáis ayudar con las siguientes búsquedas y funciones del siguiente problema:

Spoiler
Crea la siguiente base de datos "bdpiezas" que tiene como relaciones

    PROVEEDORES(S,NOMBRE,STATUS,CIUDAD),
    PIEZAS(P,NOMBREP,COLOR,PESO,CIUDAD),
    PROYECTOS(J,NOMBREJ,CIUDAD),
    VENTAS(S,P,J,CANTIDAD,FECHA)

Hay que tener en cuenta que el atributo S (resp. P y J) de la tabla VENTAS es clave externa con respecto a la tabla PROVEEDORES (resp. PIEZAS y PROYECTOS) y que los atributos subrayados forma parte de la clave primaria.
Crea cuatro ficheros de textos (proveedores.txt, piezas.txt, proyectos.txt y ventas.txt) en los que aparezcan los datos de las cuatro tablas anteriores e introduce esos datos con la orden "LOAD DATA".

(hasta aquí no tengo problema alguno)

Relizar las siguientes consultas en mysql:

    Encontrar los proveedores que han vendido la pieza P1 a todos los proyectos de Londres.
    Encontrar qué proveedores de Londres han vendido al menos una pieza roja a todos los proyectos.
    Encontrar el proveedor que tendría más comisión si por cada pieza vendida se diera 1 euro salvo para las piezas rojas que no tienen comisión.
    Encontrar el poyecto que utiliza más piezas pesadas (una pieza es pesada si su peso es mayor que 5).
    Encontrar los nombres y cuidades de aquellas piezas que sólo son suministradas por proveedores de status mayor que 2.
    Encontrar los nombres de los proyectos que sólo usan una pieza fabricada en París.
    Encontrar los nombre de los proveedores de Cádiz que sólo venden la pieza P-0003.
    Para cada proyecto y teniendo en cuenta la cantidad de piezas de un determinado tipo utilizadas en un proyecto calcula el peso total y el peso medio de las piezas totales utlizadas.

Implementa las siguientes funciones o procedimientos:

    Crea un procedimiento llamado "insproveedor" para insertar un proveedor en la base de datos y que compruebe que ningún atributo es nulo y que el atributo "S" es de la forma "PROV-XXXX" donde las X pueden tomar los valores '0' ... '9'. Esto hace que "S" sólo pueda tomar valores de la forma "PROV-0015" (ver substring y char).
    Para la tabla piezas crear un procedimiento "inspieza" que sea como el anterior pero "P" ha de ser de la forma "P-XXXX" y el atributo "COLOR" sólo puede tomar los valores "rojo", "verde", "azul".
    Para la tabla "PROYECTOS" definir "insproyecto" que haga lo mismo que en los anteriores pero "J" es de la forma "J-XXXX".
    Para la tabla ventas definir "insventa" que compruebe que los atributos son no nulos, que cantidad es mayor que cero y que la cadena de caracteres utilizada para la fecha representa una fecha.
    Crear un procedimiento que se llame "provpiezaciudad" que me devuelva los proeveedores que hay en una determinada ciudad de una pieza dada y el número total de piezas de ese tipo vendidas por cada uno.
    Para los anteriores procedimientos poner en el fichero bdpiezas.txt un ejemplo de cada uno de ellos.

Todo lo anterior (creación de base de datos, inserción de datos en la base de datos, consultas, funciones y procedimientos) han de escribirse en un fichero de texto "bdpiezas.txt" para que puede ser ejecutado con la orden "source bdpiezas.txt".
[cerrar]

Cualquier ayuda, por pequeña que sea, será mucha. Muchas gracias y saludos.

26 Enero, 2014, 07:53 pm
Respuesta #1

Dani

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Masculino
    • danielmbcn.wordpress.com
No sé si a estas alturas ya habrás conseguido sacar algo, pero haré la primera consulta como ejemplo:

Spoiler
Cuidado: la consulta la escribo a pelo, sin testearla antes (ya que no he creado las tablas para hacer la comprobación), así que es mejor que la pruebes primero.

Encontrar los proveedores que han vendido la pieza P1 a todos los proyectos de Londres.

SELECT nombre
FROM proveedores
WHERE proveedores.s = ventas.s AND ventas.p = "P1" AND ventas.j = proyectos.j AND proyectos.ciudad = "Londres"
[cerrar]

La idea es ir relacionando los campos comunes de las tablas que te interesan para poder "saltar" de unas a otras, y una vez allí, ir poniendo las condiciones que te interesan en la cláusula WHERE.
En otras consultas, como en la última, sospecho que necesitarás utilizar funciones predefinidas como COUNT() y SUM().

Para la segunda parte, la de los procedimientos, no puedo ayudarte, lo siento.