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

[SOLUCIONADO] Por favor Ayud_a con consultas en mysql ?

Estas en el tema de Por favor Ayud_a con consultas en mysql ? en el foro de Mysql en Foros del Web. ENUNCIADO: Esta es una practica para un parcial. Nose como seguir las consultas, alguien me ayuda? A partir de la consulta 3.4 en adelante nose ...
  #1 (permalink)  
Antiguo 17/11/2014, 13:08
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Por favor Ayud_a con consultas en mysql ?

ENUNCIADO:

Esta es una practica para un parcial. Nose como seguir las consultas, alguien me ayuda?

A partir de la consulta 3.4 en adelante nose como hacer las siguientes D: !!

Alguien me puede ayudar? Soy novato.


Piezas y Proveedores

PIEZAS

PK Codigo int
Nombre varchar(100)
PROVEEDORES
PK Id char(4)
Nombre varchar(100)

SUMINISTRA

PK,FK1 CodigoPieza int
PK,FK2 IdProveedor char(4)
Precio int

CONSIGNAS:

3.1. Obtener los nombres de todas las piezas.
3.2. Obtener todos los datos de todos los proveedores.
3.3. Obtener el precio medio al que se nos suministran las piezas.
3.4. Obtener los nombres de los proveedores que suministran la pieza 1.
3.5. Obtener los nombres de las piezas suministradas por el proveedor cuyo código es
SQL.
3.6. Obtener los nombres de los proveedores que suministran las piezas más caras, indicando el nombre de la pieza y el precio al que la suministran.
3.7. Hacer constar en la base de datos que la empresa ”La Perseverancia Supplies” (código LPS) va a empezar a suministrarnos tuercas (código 1) a 7 pesos cada tuerca.
3.8. Aumentar los precios en una unidad.
3.9. Hacer constar en la base de datos que la empresa ”HALLEY Corp.”(HYC) no
va a suministrarnos ninguna pieza (aunque la empresa en si va a seguir constando
en nuestra base de datos).
3.10. Hacer constar en la base de datos que la empresa HALLEY Corp.”(HYC) ya no va a suministrarnos clavos (código 4)




Lo que hice del código:

Código SQL:
Ver original
  1. CREATE schema practica3;
  2.  
  3. USE practica3;
  4.  
  5. CREATE TABLE piezas(
  6.  
  7. codigo INT PRIMARY KEY,
  8. nombre VARCHAR(100)
  9.  
  10. );
  11.  
  12. CREATE TABLE prov(
  13.  
  14. id CHAR(4) PRIMARY KEY,
  15. nombre VARCHAR(100)
  16.  
  17. );
  18.  
  19. CREATE TABLE suministra(
  20.  
  21. codigopiezas INT,
  22. idprov CHAR(4),
  23. nomprov CHAR(100),
  24. precio INT,
  25. FOREIGN KEY (codigopiezas) REFERENCES piezas(codigo),
  26. FOREIGN KEY (idprov) REFERENCES prov(id)
  27.  
  28. );
  29.  
  30. INSERT INTO piezas
  31. (codigo,nombre)
  32. VALUES (01,'Tornillo'),
  33.         (02,'Tuerca'),
  34.         (03,'Destornillador'),
  35.         (04,'Mica'),
  36.         (05,'Arandela');
  37.  
  38. INSERT INTO prov
  39. (id,nombre)
  40. VALUES ('01','Karysefuedevacaciones'),
  41.         ('02','Protools'),
  42.         ('03','Micanoseanimaalos10k');
  43.  
  44. INSERT INTO suministra
  45. (codigopiezas,idprov,nomprov,precio)
  46. VALUES (01,'01','Karysefuedevacaciones',100),
  47.         (02,'02','Karysefuedevacaciones', 2000),
  48.         (03,'03','Protools',546),
  49.         (04,'01','Protools',7845),
  50.         (01,'03','Micanoseanimaalos10k',45);
  51.  
  52.  
  53. /*Consulta 3.1: */
  54.  
  55. SELECT piezas.nombre
  56. FROM piezas;
  57.  
  58. /*Consulta 3.2: */
  59.  
  60. SELECT prov.id, prov.nombre
  61. FROM prov;
  62.  
  63. /*Consulta 3.3: */
  64.  
  65. SELECT avg(precio)
  66. FROM suministra
  67. GROUP BY suministra.codigopiezas;
  68.  
  69. /*Consulta 3.4: */
[/CODE]

Última edición por gnzsoloyo; 17/11/2014 a las 13:34
  #2 (permalink)  
Antiguo 17/11/2014, 13:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Por favor Ayud_a con consultas en mysql ?

Un poco más de esfuerzo, por favor... Son consultas básicas, y te detuviste en las para dummies.

Al menos propon las soluciones que se te puedan ocurrir, y recuerda que Foros del Web no es un sitio para resolver tareas escolares. Es para ayudar a desarrolladores, en espoecial con problemas de la vida real.

Para resolver ejercicios están los profesores de donde cursas. Ellos tienen la obligación.

Sin pretender ofender.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/11/2014, 13:44
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 10 años, 1 mes
Puntos: 12
Respuesta: Por favor Ayud_a con consultas en mysql ?

hola citrusl, te paso 2 ejercicios, luego es lógica.

3.4

Código SQL:
Ver original
  1. SELECT
  2.     prov.Nombre
  3. FROM
  4.     proveedores prov INNER JOIN
  5.     suministra sumi ON prov.idproveedor = sumi.idproveedor INNER JOIN
  6.     piezas pie ON sumi.codigopieza = pie.codigo
  7. WHERE
  8.     pie.codigo = 1


3.5

Código SQL:
Ver original
  1. SELECT
  2.     pie.Nombre
  3. FROM
  4.     piezas pie INNER JOIN
  5.     suministra sumi ON pie.codigo = sumi.codigopieza INNER JOIN
  6.     proveedores prov ON sumi.idproveedor = prov.idproveedor
  7. WHERE
  8.     prov.nombre = 'sql'


Espero te sirva.

Saludos.
__________________
http://www.sp-vision.net
  #4 (permalink)  
Antiguo 21/11/2014, 08:41
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Por favor Ayud_a con consultas en mysql ?

En la linea 42 me tira error de duplicado. Cómo lo soluciono?

La ultima consulta me devuelve el valor correcto pero repetido muchas veces. ¿Porqué?


Código SQL:
Ver original
  1. CREATE schema Piezas_y_Proovedores;
  2. USE Piezas_y_Proovedores;
  3.  
  4. CREATE TABLE PIEZAS (
  5.  
  6. codigo INT PRIMARY KEY,
  7. nombre VARCHAR(100)
  8.  
  9. );
  10.  
  11. CREATE TABLE PROOVEDORES (
  12.  
  13. id CHAR(4) PRIMARY KEY,
  14. nombre VARCHAR(100)
  15.  
  16. );
  17.  
  18. CREATE TABLE SUMINISTRA (
  19.  
  20. codigo_de_la_pieza INT,
  21. id_Proovedor CHAR(4),
  22. precio INT,
  23. FOREIGN KEY (codigo_de_la_pieza) REFERENCES PIEZAS(codigo),
  24. FOREIGN KEY (id_Proovedor) REFERENCES PROOVEDORES(id)
  25.  
  26. );
  27.  
  28. INSERT INTO PIEZAS
  29. (codigo,nombre)
  30. VALUES (1,'Tornillos'),
  31.        (2,'Tuercas'),
  32.        (3,'Arandelas'),
  33.        (4,'Destornillador'),
  34.        (5,'Taladro');
  35.  
  36. INSERT INTO PROOVEDORES
  37. (id,nombre)
  38. VALUES ('a','Unilever'),
  39.        ('b','TiendaLeon'),
  40.        ('c','ProTools'),
  41.        ('d','MegaTools'),
  42.        ('e','UltraTools');
  43.  
  44. INSERT INTO SUMINISTRA
  45. (codigo_de_la_pieza,id_Proovedor,precio)
  46. VALUES (1,'a',300),
  47.        (2,'b',200),
  48.        (3,'c',500),
  49.        (4,'d',350),
  50.        (5,'e',600);
  51.  
  52. /*3.1 OBTENER LOS NOMBRES DE TODAS LAS PIEZAS*/
  53.  
  54. SELECT PIEZAS.nombre
  55. FROM  PIEZAS;
  56.  
  57. /*3.2 OBTENER TODOS LOS DATOS DE TODOS LOS PROOVEDORES*/
  58.  
  59. SELECT *
  60. FROM PROOVEDORES;
  61.  
  62. /*3.3 OBTENER EL PRECIO MEDIO AL QUE SE NOS SUMINISTRAN LAS PIEZAS*/
  63.  
  64. SELECT AVG(precio)
  65. FROM SUMINISTRA;
  66.  
  67. /*3.4 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LA PIEZA 1*/
  68.  
  69. SELECT PROOVEDORES.nombre
  70. FROM PROOVEDORES INNER JOIN SUMINISTRA
  71. ON PROOVEDORES.id = SUMINISTRA.id_Proovedor INNER JOIN
  72. PIEZAS ON SUMINISTRA.codigo_de_la_pieza = PIEZAS.codigo
  73. WHERE PIEZAS.codigo = 1;
[/code]

Última edición por gnzsoloyo; 21/11/2014 a las 08:51
  #5 (permalink)  
Antiguo 21/11/2014, 08:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Por favor Ayud_a con consultas en mysql ?

Cita:
En la linea 42 me tira error de duplicado. Cómo lo soluciono?
Verificando lo que contiene la tabla...
Un INSERT declara clave duplicada cuando hay algo que ya existe. Y eso sólo se puede comprobar mirando los datos que están alli.

Cita:
La ultima consulta me devuelve el valor correcto pero repetido muchas veces. ¿Porqué?
Porque tienes una relacion 1:N o N:M, y no todas las repeticiones son tales.
Código SQL:
Ver original
  1. SELECT PROOVEDORES.nombre
  2. FROM PROOVEDORES INNER JOIN SUMINISTRA ON PROOVEDORES.id = SUMINISTRA.id_Proovedor INNER JOIN PIEZAS ON SUMINISTRA.codigo_de_la_pieza = PIEZAS.codigo
  3. WHERE PIEZAS.codigo = 1;
Estás pidiendo la lista de proveedores para esa sola pieza, por lo que si devuelve mas de uno, eso debe haber...

En definitiva, es un problema de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 21/11/2014, 09:16
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Por favor Ayud_a con consultas en mysql ?

Un problema de datos.... pero no veo duplicado.

En teoría el 'a' del "id" no debería ser igual al 'a' de "id_Proovedores" ?

Nose que tengo que modificar.
  #7 (permalink)  
Antiguo 21/11/2014, 09:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Pues primero que nada, revisa lo que tienes en la tabla relacional.
Postea el contenido completo y veamos qué dato es el que genera la repetición.

Por cierto... Tu tabla relacional no tiene PK, lo que puede generar duplicidades sin detección.
Debería ser así:
Código SQL:
Ver original
  1. CREATE TABLE SUMINISTRA (
  2.  codigo_de_la_pieza INT,
  3. id_Proovedor CHAR(4),
  4. precio INT,
  5. PRIMARY KEY(codigo_de_la_pieza,id_Proovedor),
  6. FOREIGN KEY (codigo_de_la_pieza) REFERENCES PIEZAS(codigo),
  7. FOREIGN KEY (id_Proovedor) REFERENCES PROOVEDORES(id)
  8. );

No pueden existir tablas sin PK. Eso es básico, y las relacionales la llevan compuesta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 21/11/2014, 09:41
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Por favor Ayud_a con consultas en mysql ?

No existe ni der ni MR. Es solo el enunciado y tenemos que hacer el código.

Tenías razon, me faltó lo de la primary key.

Cambié "a" por SQL (mas adelante pide una consulta con ese dato).
y por ejemplo ahora me dice que el duplicado es "b"

Código SQL:
Ver original
  1. INSERT INTO PROOVEDORES
  2. (id,nombre)
  3. VALUES ('SQL','Unilever'),
  4.        ('b','TiendaLeon'),
  5.        ('c','ProTools'),
  6.        ('d','MegaTools'),
  7.        ('e','UltraTools');
  8.  
  9. INSERT INTO SUMINISTRA
  10. (codigo_de_la_pieza,id_Proovedor,precio)
  11. VALUES (1,'SQL',300),
  12.        (2,'b',200),
  13.        (3,'c',500),
  14.        (4,'d',350),
  15.        (5,'e',600);
[/code]

Última edición por gnzsoloyo; 21/11/2014 a las 10:34
  #9 (permalink)  
Antiguo 21/11/2014, 10:11
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Por favor Ayud_a con consultas en mysql ?

Ya lo solucioné (aparentemente). Existe manera de eliminar las consultas ya hechas?

Es decir para que no me muestre cuando runeo alguna todas las que ya había probado antes.
  #10 (permalink)  
Antiguo 21/11/2014, 10:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Por favor Ayud_a con consultas en mysql ?

Cita:
Existe manera de eliminar las consultas ya hechas?
¿A qué consultas te refieres?

Si lo que quieres decir es depurar los datos, lo más simple es truncar las tablas y volver a ejecutar todos los INSERT ya limpios de basura...

¿Con qué estás ejecutando las queries?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 21/11/2014, 10:51
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Por favor Ayud_a con consultas en mysql ?

Mysql workbench.

Me refería a cuando te posiciónas al final de una consulta. Select(); (aquí) y le dás clic a compilar...

Te muestra la tabla con Unilever por ejemplo. Pero debería mostrarlo 1 sola ves, lo muestra cientas de veces cada ves que compilo la consulta.

Es decir, hay manera de borrar los datos y dejarla en blanco como si nunca se hubiera hecho la consulta? (En la tabla tipo excel)


La ultima linea me tira error. Code 1175


Código SQL:
Ver original
  1. CREATE schema Piezas_y_Proovedores;
  2. USE Piezas_y_Proovedores;
  3.  
  4. CREATE TABLE PIEZAS (
  5.  
  6. codigo INT PRIMARY KEY,
  7. nombre VARCHAR(100)
  8.  
  9. );
  10.  
  11. CREATE TABLE PROOVEDORES (
  12.  
  13. id CHAR(4) PRIMARY KEY,
  14. nombre VARCHAR(100)
  15.  
  16. );
  17.  
  18. CREATE TABLE SUMINISTRA (
  19.  
  20. codigo_de_la_pieza INT,
  21. id_Proovedor CHAR(4),
  22. precio INT,
  23. PRIMARY KEY (codigo_de_la_pieza,id_Proovedor),
  24. FOREIGN KEY (codigo_de_la_pieza) REFERENCES PIEZAS(codigo),
  25. FOREIGN KEY (id_Proovedor) REFERENCES PROOVEDORES(id)
  26.  
  27. );
  28.  
  29. INSERT INTO PIEZAS
  30. (codigo,nombre)
  31. VALUES (1,'Tornillos'),
  32.        (2,'Cinta'),
  33.        (3,'Arandelas'),
  34.        (4,'Destornillador'),
  35.        (5,'Taladro');
  36.  
  37. INSERT INTO PROOVEDORES
  38. (id,nombre)
  39. VALUES ('SQL','Unilever'),
  40.        ('RAT','TiendaLeon'),
  41.        ('LAB','ProTools'),
  42.        ('DER','MegaTools'),
  43.        ('LOV','UltraTools');
  44.  
  45. INSERT INTO SUMINISTRA
  46. (codigo_de_la_pieza,id_Proovedor,precio)
  47. VALUES (1,'SQL',300),
  48.        (2,'RAT',200),
  49.        (3,'LAB',500),
  50.        (4,'DER',350),
  51.        (5,'LOV',600);
  52.  
  53. /*3.1 OBTENER LOS NOMBRES DE TODAS LAS PIEZAS*/
  54.  
  55. SELECT PIEZAS.nombre
  56. FROM  PIEZAS;
  57.  
  58. /*3.2 OBTENER TODOS LOS DATOS DE TODOS LOS PROOVEDORES*/
  59.  
  60. SELECT *
  61. FROM PROOVEDORES;
  62.  
  63. /*3.3 OBTENER EL PRECIO MEDIO AL QUE SE NOS SUMINISTRAN LAS PIEZAS*/
  64.  
  65. SELECT AVG(precio)
  66. FROM SUMINISTRA;
  67.  
  68. /*3.4 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LA PIEZA 1*/
  69.  
  70. SELECT PROOVEDORES.nombre
  71. FROM PROOVEDORES INNER JOIN SUMINISTRA
  72. ON PROOVEDORES.id = SUMINISTRA.id_Proovedor INNER JOIN
  73. PIEZAS ON SUMINISTRA.codigo_de_la_pieza = PIEZAS.codigo
  74. WHERE SUMINISTRA.codigo_de_la_pieza = 1;
  75.  
  76. /*3.5 OBTENER LOS NOMBRES DE LAS PIEZAS SUMINISTRADAS POR EL PROVEEDOR CUYO CODIGO ES SQL*/
  77.  
  78. SELECT PIEZAS.nombre
  79. FROM PIEZAS INNER JOIN SUMINISTRA
  80. ON PIEZAS.codigo = SUMINISTRA.codigo_de_la_pieza
  81. WHERE SUMINISTRA.id_Proovedor = 'SQL';
  82.  
  83. /*3.6 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LAS PIEZAS MAS CARAS, INDICANDO EL NOMBRE DE LA PIEZA Y EL PRECIO AL QUE SUMINISTRAN.*/
  84.  
  85. SELECT p1.nombre,ps1.nombre,precio
  86. FROM PIEZAS p1 INNER JOIN (SUMINISTRA s1 INNER JOIN PROOVEDORES ps1
  87. ON s1.id_Proovedor = ps1.id)
  88. ON p1.codigo = s1.codigo_de_la_pieza
  89. WHERE precio IN
  90. (SELECT MAX(precio)
  91. FROM SUMINISTRA s2 GROUP BY s2.codigo_de_la_pieza
  92. HAVING s2.codigo_de_la_pieza = p1.codigo);
  93.  
  94. /*3.7 HACER CONSTAR EN LA BASE DE DATOS QUE LA EMPRESA "LA PERSEVERANCIA SUPPLIES" (CODIGO LPS) VA A EMPEZAR A SUMINISTRARNOS TUERCAS (CODIGO 1) A 7 PESOS CADA TUERCA.*/
  95.  
  96. INSERT INTO SUMINISTRA
  97. VALUES (1,'LPS',007);
  98.  
  99. /*3.8 AUMENTAR LOS PRECIOS EN UNA UNIDAD*/
  100.  
  101. UPDATE SUMINISTRA SET precio = precio + 1;
[/code]

Última edición por gnzsoloyo; 21/11/2014 a las 11:00
  #12 (permalink)  
Antiguo 21/11/2014, 10:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Cita:
Me refería a cuando te posiciónas al final de una consulta. Select(); (aquí) y le dás clic a compilar...

Te muestra la tabla con Unilever por ejemplo. Pero debería mostrarlo 1 sola ves, lo muestra cientas de veces cada ves que compilo la consulta.
Tres cosas:
1) Lo único que se compila en MySQL son los stored proceudres, stored function, event y trigger. No existe una compilación de scripts... Sólo se ejecutan.
2) Cuando te posicionas al inicio y ejecutas el script, se ejecuta todo el script, o desde un punto en adelante.
3) Si quieres generar un script seguro para la creación de bases de datos, te conviene trabajar primero en el diseñador de esquemas.

Finalmente: Por favor, usa los Highlights de la ventana de edición . Hay específicos para cada cosa, y hay dos dedicados a SQL. Tengo que editar todas las vueltas tus posts para poder etiquetarlos correctamente de modo que resalten bien el código.
El label "CODE", es un label genérico que no sirve para nada.

Código MySQL:
Ver original
  1. CREATE SCHEMA IF NOT EXISTS Piezas_y_Proovedores;
  2. USE Piezas_y_Proovedores;
  3.  
  4. DROP TABLE IF EXISTS suministra;
  5. DROP TABLE IF EXISTS proveedores;
  6.  
  7. CREATE TABLE IF NOT EXISTS PIEZAS (
  8.     codigo INT PRIMARY KEY,
  9.     nombre VARCHAR(100)
  10.  
  11. CREATE TABLE IF NOT EXISTS proveedores (
  12.     id CHAR(4) PRIMARY KEY,
  13.     nombre VARCHAR(100)
  14.  
  15. CREATE TABLE IF NOT EXISTS SUMINISTRA (
  16.     codigo_de_la_pieza INT,
  17.     id_Proovedor CHAR(4),
  18.     precio INT,
  19.     PRIMARY KEY (codigo_de_la_pieza , id_Proovedor),
  20.     FOREIGN KEY (codigo_de_la_pieza)
  21.         REFERENCES PIEZAS (codigo),
  22.     FOREIGN KEY (id_Proovedor)
  23.         REFERENCES PROOVEDORES (id)
  24. );
  25.  
  26. INSERT INTO PIEZAS
  27. (codigo,nombre)
  28. VALUES (1,'Tornillos'),
  29.        (2,'Cinta'),
  30.        (3,'Arandelas'),
  31.        (4,'Destornillador'),
  32.        (5,'Taladro');
  33.  
  34. INSERT INTO PROOVEDORES
  35. (id,nombre)
  36. VALUES ('SQL','Unilever'),
  37.        ('RAT','TiendaLeon'),
  38.        ('LAB','ProTools'),
  39.        ('DER','MegaTools'),
  40.        ('LOV','UltraTools');
  41.  
  42. INSERT INTO SUMINISTRA
  43. (codigo_de_la_pieza,id_Proovedor,precio)
  44. VALUES (1,'SQL',300),
  45.        (2,'RAT',200),
  46.        (3,'LAB',500),
  47.        (4,'DER',350),
  48.        (5,'LOV',600);
  49.  
  50. /*3.1 OBTENER LOS NOMBRES DE TODAS LAS PIEZAS*/
  51.  
  52.     PIEZAS.nombre
  53.     PIEZAS;
  54.  
  55. /*3.2 OBTENER TODOS LOS DATOS DE TODOS LOS PROOVEDORES*/
  56.  
  57.     *
  58.     PROOVEDORES;
  59.  
  60. /*3.3 OBTENER EL PRECIO MEDIO AL QUE SE NOS SUMINISTRAN LAS PIEZAS*/
  61.  
  62.     AVG(precio)
  63.     SUMINISTRA;
  64.  
  65. /*3.4 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LA PIEZA 1*/
  66.  
  67.     PROOVEDORES.nombre
  68.     PROOVEDORES
  69.         INNER JOIN
  70.     SUMINISTRA ON PROOVEDORES.id = SUMINISTRA.id_Proovedor
  71.         INNER JOIN
  72.     PIEZAS ON SUMINISTRA.codigo_de_la_pieza = PIEZAS.codigo
  73.     SUMINISTRA.codigo_de_la_pieza = 1;
  74.  
  75. /*3.5 OBTENER LOS NOMBRES DE LAS PIEZAS SUMINISTRADAS POR EL PROVEEDOR CUYO CODIGO ES SQL*/
  76.  
  77.     PIEZAS.nombre
  78.     PIEZAS
  79.         INNER JOIN
  80.     SUMINISTRA ON PIEZAS.codigo = SUMINISTRA.codigo_de_la_pieza
  81.     SUMINISTRA.id_Proovedor = 'SQL';
  82.  
  83. /*3.6 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LAS PIEZAS MAS CARAS, INDICANDO EL NOMBRE DE LA PIEZA Y EL PRECIO AL QUE SUMINISTRAN.*/
  84.  
  85.     p1.nombre, ps1.nombre, precio
  86.     PIEZAS p1
  87.         INNER JOIN
  88.     (SUMINISTRA s1
  89.     INNER JOIN PROOVEDORES ps1 ON s1.id_Proovedor = ps1.id) ON p1.codigo = s1.codigo_de_la_pieza
  90.     precio IN (SELECT
  91.             MAX(precio)
  92.         FROM
  93.             SUMINISTRA s2
  94.         GROUP BY s2.codigo_de_la_pieza
  95.         HAVING s2.codigo_de_la_pieza = p1.codigo);
  96.  
  97. /*3.7 HACER CONSTAR EN LA BASE DE DATOS QUE LA EMPRESA "LA PERSEVERANCIA SUPPLIES" (CODIGO LPS) VA A EMPEZAR A SUMINISTRARNOS TUERCAS (CODIGO 1) A 7 PESOS CADA TUERCA.*/
  98.  
  99. INSERT INTO SUMINISTRA
  100. VALUES (1,'LPS',007);
  101.  
  102. /*3.8 AUMENTAR LOS PRECIOS EN UNA UNIDAD*/
  103.  
  104. UPDATE SUMINISTRA
  105.     precio = precio + 1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 21/11/2014, 11:15
 
Fecha de Ingreso: octubre-2014
Mensajes: 14
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Por favor Ayud_a con consultas en mysql ?

Lo siento. Y gracias por la ayuda!!
  #14 (permalink)  
Antiguo 21/11/2014, 11:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Por favor Ayud_a con consultas en mysql ?

Una corrección sobre tu script:
Código SQL:
Ver original
  1. DROP SCHEMA IF EXISTS Piezas_y_Proovedores;
  2. CREATE SCHEMA IF NOT EXISTS Piezas_y_Proovedores;
  3. USE Piezas_y_Proovedores;
  4.  
  5. DROP TABLE IF EXISTS suministra;
  6. DROP TABLE IF EXISTS proveedores;
  7. DROP TABLE IF EXISTS piezas;
  8.  
  9. CREATE TABLE IF NOT EXISTS PIEZAS (
  10.     codigo INT PRIMARY KEY,
  11.     nombre VARCHAR(100)
  12. )  ENGINE=INNODB;
  13.  
  14. CREATE TABLE IF NOT EXISTS proveedores (
  15.     id CHAR(4) PRIMARY KEY,
  16.     nombre VARCHAR(100)
  17. )  ENGINE=INNODB;
  18.  
  19. CREATE TABLE IF NOT EXISTS SUMINISTRA (
  20.     codigo_de_la_pieza INT,
  21.     id_Proovedor CHAR(4),
  22.     precio INT,
  23.     PRIMARY KEY (codigo_de_la_pieza , id_Proovedor),
  24.     FOREIGN KEY (codigo_de_la_pieza)
  25.         REFERENCES PIEZAS (codigo),
  26.     FOREIGN KEY (id_Proovedor)
  27.         REFERENCES proveedores (id)
  28. );
  29.  
  30. INSERT INTO PIEZAS
  31. (codigo,nombre)
  32. VALUES (1,'Tornillos'),
  33.        (2,'Cinta'),
  34.        (3,'Arandelas'),
  35.        (4,'Destornillador'),
  36.        (5,'Taladro');
  37.  
  38. INSERT INTO proveedores
  39. (id,nombre)
  40. VALUES ('SQL','Unilever'),
  41.        ('RAT','TiendaLeon'),
  42.        ('LAB','ProTools'),
  43.        ('DER','MegaTools'),
  44.        ('LOV','UltraTools');
  45.  
  46. INSERT INTO SUMINISTRA
  47. (codigo_de_la_pieza,id_Proovedor,precio)
  48. VALUES (1,'SQL',300),
  49.        (2,'RAT',200),
  50.        (3,'LAB',500),
  51.        (4,'DER',350),
  52.        (5,'LOV',600);
  53.  
  54. /*3.1 OBTENER LOS NOMBRES DE TODAS LAS PIEZAS*/
  55.  
  56. SELECT
  57.     P.nombre
  58. FROM
  59.     PIEZAS P;
  60.  
  61. /*3.2 OBTENER TODOS LOS DATOS DE TODOS LOS PROOVEDORES*/
  62.  
  63. SELECT
  64.     *
  65. FROM
  66.     proveedores;
  67.  
  68. /*3.3 OBTENER EL PRECIO MEDIO AL QUE SE NOS SUMINISTRAN LAS PIEZAS*/
  69.  
  70. SELECT
  71.     AVG(precio)
  72. FROM
  73.     SUMINISTRA;
  74.  
  75. /*3.4 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LA PIEZA 1*/
  76.  
  77. SELECT
  78.     P.nombre
  79. FROM
  80.     proveedores P
  81.         INNER JOIN
  82.     SUMINISTRA s ON P.id = s.id_Proovedor
  83.         INNER JOIN
  84.     PIEZAS pi ON s.codigo_de_la_pieza = pi.codigo
  85. WHERE
  86.     s.codigo_de_la_pieza = 1;
  87.  
  88. /*3.5 OBTENER LOS NOMBRES DE LAS PIEZAS SUMINISTRADAS POR EL PROVEEDOR CUYO CODIGO ES SQL*/
  89.  
  90. SELECT
  91.     P.nombre
  92. FROM
  93.     PIEZAS P
  94.         INNER JOIN
  95.     SUMINISTRA S ON p.codigo = s.codigo_de_la_pieza
  96. WHERE
  97.     s.id_Proovedor = 'SQL';
  98.  
  99. /*3.6 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LAS PIEZAS MAS CARAS, INDICANDO EL NOMBRE DE LA PIEZA Y EL PRECIO AL QUE SUMINISTRAN.*/
  100.  
  101. SELECT
  102.     p1.nombre, ps1.nombre, precio
  103. FROM
  104.     PIEZAS p1
  105.         INNER JOIN
  106.     (SUMINISTRA s1
  107.     INNER JOIN proveedores ps1 ON s1.id_Proovedor = ps1.id) ON p1.codigo = s1.codigo_de_la_pieza
  108. WHERE
  109.     precio IN (SELECT
  110.             MAX(precio)
  111.         FROM
  112.             SUMINISTRA s2
  113.         GROUP BY s2.codigo_de_la_pieza
  114.         HAVING s2.codigo_de_la_pieza = p1.codigo);
  115.  
  116. /*3.7 HACER CONSTAR EN LA BASE DE DATOS QUE LA EMPRESA "LA PERSEVERANCIA SUPPLIES" (CODIGO LPS) VA A EMPEZAR A SUMINISTRARNOS TUERCAS (CODIGO 1) A 7 PESOS CADA TUERCA.*/
  117.  
  118. INSERT INTO SUMINISTRA
  119. VALUES (1,'LPS',007);
  120.  
  121. /*3.8 AUMENTAR LOS PRECIOS EN UNA UNIDAD*/
  122.  
  123. UPDATE SUMINISTRA
  124. SET
  125.     precio = precio + 1;

Nota: tu punto 3.7 falla porque no estás creando el INSERT previo del proveedor en la tabla de proveedores.

Te faltó esto:
Código SQL:
Ver original
  1. INSERT INTO proveedores
  2. (id,nombre)
  3. VALUES ('LPS','LA PERSEVERANCIA SUPPLIES');
  4.  
  5. INSERT INTO SUMINISTRA
  6. VALUES (1,'LPS',007);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 21/11/2014 a las 11:31

Etiquetas: favor, key, select, sql
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 03:10.