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

[SOLUCIONADO] procedimiento con variable y visualizacion

Estas en el tema de procedimiento con variable y visualizacion en el foro de Mysql en Foros del Web. Hola Estoy realizando un ciclo formativo de grado superior de , desarrollo de aplicaciones web y me gustaría recibir ayudar sólo para saber si entiendo ...
  #1 (permalink)  
Antiguo 14/05/2016, 10:27
 
Fecha de Ingreso: mayo-2015
Ubicación: Vigo
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
procedimiento con variable y visualizacion

Hola

Estoy realizando un ciclo formativo de grado superior de , desarrollo de aplicaciones web y me gustaría recibir ayudar sólo para saber si entiendo bien las cosas o no , ya que yo SIEMPRE pondré el enunciado y el código que yo entiendo debe ir .

Construya un procedimiento que seleccione el artículo de mayor
precio que esté almacenado en la tabla, almacene su valor en
una variable y luego visualícelo. (INTO sólo visualiza un
registro).

Código MySQL:
Ver original
  1. create table if not exists temporal
  2. (
  3. codigo varchar(5) primary key,
  4. nombre varchar(20),
  5. precio int(11)
  6. );
  7.  
  8. delimiter $$
  9. create procedure sele_articulo(nombre varchar(20))
  10. select nombre as art_may from articulos where precio >=80;
  11. SELECT @variable:= nombre FROM  articulos WHERE precio=80;
  12.  
  13. end $$
  14. delimiter ;
  15.  
  16. call sele_articulo(80);

el motivo de usar una tabla temporal , por sí alguien duda lo hago , por que en la teoría se nos indica que para hacer obtener un resultado de más de un registro es necesario hacerlo así , gracias .

Última edición por gnzsoloyo; 14/05/2016 a las 14:42
  #2 (permalink)  
Antiguo 14/05/2016, 12:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: procedimiento con variable y visualizacion

si estas buscando el de mayor precio entonces deberias de usar la funcion max

algo asi:

Código MySQL:
Ver original
  1. select nombre from tabla where precio=
  2. (select max(precio) from tabla )
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/05/2016, 12:47
 
Fecha de Ingreso: mayo-2015
Ubicación: Vigo
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: procedimiento con variable y visualizacion

Cita:
Iniciado por Libras Ver Mensaje
si estas buscando el de mayor precio entonces deberias de usar la funcion max

algo asi:

Código MySQL:
Ver original
  1. select nombre from tabla where precio=
  2. (select max(precio) from tabla )

pero y según tus conocimientos el resto esta bien ? Pero y la variable ? , el resulto mayor ya lo consigo con la función >= ya que el resultado máximo en la tabla es 80
  #4 (permalink)  
Antiguo 14/05/2016, 14:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: procedimiento con variable y visualizacion

Tomando lo que pones en el primer post como ejemplo de tu idea, mas lo que te explica Libras, y agregándole ejemplos, la respuesta sería:
Código MySQL:
Ver original
  1. mysql> DROP  TABLE IF  EXISTS temporal;
  2. Query OK, 0 rows affected (0.06 sec)
  3.  
  4. mysql> CREATE TABLE IF NOT EXISTS temporal (
  5.     ->     codigo VARCHAR(5) PRIMARY KEY,
  6.     ->     nombre VARCHAR(20),
  7.     ->     precio INT(11)
  8.     -> );
  9. Query OK, 0 rows affected (0.05 sec)
  10.  
  11. mysql>
  12. mysql> INSERT INTO temporal(codigo,nombre,precio) VALUES
  13.     -> ('a001','patines',80),
  14.     -> ('a002','guantes',10),
  15.     -> ('a003','cascos',40),
  16.     -> ('a004','gafas',25),
  17.     -> ('a005','rodilleras',30),
  18.     -> ('a006','protector bucal',15),
  19.     -> ('a007','coderas',30),
  20.     -> ('a008','camisetas',45),
  21.     -> ('a009','pantalones',55),
  22.     -> ('a010','gorras',20),
  23.     -> ('a012','botas',NULL);
  24. Query OK, 11 rows affected (0.03 sec)
  25. Records: 11  Duplicates: 0  Warnings: 0
  26.  
  27. mysql>
  28. mysql> delimiter $$
  29. mysql>
  30. mysql> DROP PROCEDURE IF EXISTS  sele_articulo$$
  31. Query OK, 0 rows affected (0.00 sec)
  32.  
  33. mysql>
  34. mysql> CREATE PROCEDURE sele_articulo()
  35.     -> BEGIN
  36.     -> SELECT nombre FROM temporal WHERE precio=
  37.     -> (SELECT MAX(precio) FROM temporal )
  38.     ->
  39.     -> INTO @variable
  40.     -> ;
  41.     ->
  42.     -> END $$
  43. Query OK, 0 rows affected (0.00 sec)
  44.  
  45. mysql> delimiter ;

Luego lo llamamos:

Código MySQL:
Ver original
  1. mysql> CALL sele_articulo();
  2. Query OK, 1 row affected (0.02 sec)

y después consultamos la variable de MySQL usada:

Código MySQL:
Ver original
  1. mysql> SELECT @variable MaximoPrecio;
  2. +--------------+
  3. | MaximoPrecio |
  4. +--------------+
  5. | patines      |
  6. +--------------+
  7. 1 row in set (0.00 sec)

Posdata: Como verás, estoy usando el mismo ejemplo de datos que usaste TU al postear el ejercicio el http://www.lawebdelprogramador.com/f...e-imprime.html

Este nuevo ejercicio también lo consultaste alli.
__________________
¿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; 14/05/2016 a las 14:58
  #5 (permalink)  
Antiguo 14/05/2016, 14:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: procedimiento con variable y visualizacion

Cita:
Iniciado por saroan_sqlero Ver Mensaje
pero y según tus conocimientos el resto esta bien ? Pero y la variable ? , el resulto mayor ya lo consigo con la función >= ya que el resultado máximo en la tabla es 80
Y si el precio fuera menor a 80?? aqui sabes que tu maximo es 80, pero si no lo supieras?¡ para eso es la funcion max ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 14/05/2016, 15:33
 
Fecha de Ingreso: mayo-2015
Ubicación: Vigo
Mensajes: 20
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: procedimiento con variable y visualizacion

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Tomando lo que pones en el primer post como ejemplo de tu idea, mas lo que te explica Libras, y agregándole ejemplos, la respuesta sería:
Código MySQL:
Ver original
  1. mysql> DROP  TABLE IF  EXISTS temporal;
  2. Query OK, 0 rows affected (0.06 sec)
  3.  
  4. mysql> CREATE TABLE IF NOT EXISTS temporal (
  5.     ->     codigo VARCHAR(5) PRIMARY KEY,
  6.     ->     nombre VARCHAR(20),
  7.     ->     precio INT(11)
  8.     -> );
  9. Query OK, 0 rows affected (0.05 sec)
  10.  
  11. mysql>
  12. mysql> INSERT INTO temporal(codigo,nombre,precio) VALUES
  13.     -> ('a001','patines',80),
  14.     -> ('a002','guantes',10),
  15.     -> ('a003','cascos',40),
  16.     -> ('a004','gafas',25),
  17.     -> ('a005','rodilleras',30),
  18.     -> ('a006','protector bucal',15),
  19.     -> ('a007','coderas',30),
  20.     -> ('a008','camisetas',45),
  21.     -> ('a009','pantalones',55),
  22.     -> ('a010','gorras',20),
  23.     -> ('a012','botas',NULL);
  24. Query OK, 11 rows affected (0.03 sec)
  25. Records: 11  Duplicates: 0  Warnings: 0
  26.  
  27. mysql>
  28. mysql> delimiter $$
  29. mysql>
  30. mysql> DROP PROCEDURE IF EXISTS  sele_articulo$$
  31. Query OK, 0 rows affected (0.00 sec)
  32.  
  33. mysql>
  34. mysql> CREATE PROCEDURE sele_articulo()
  35.     -> BEGIN
  36.     -> SELECT nombre FROM temporal WHERE precio=
  37.     -> (SELECT MAX(precio) FROM temporal )
  38.     ->
  39.     -> INTO @variable
  40.     -> ;
  41.     ->
  42.     -> END $$
  43. Query OK, 0 rows affected (0.00 sec)
  44.  
  45. mysql> delimiter ;

Luego lo llamamos:

Código MySQL:
Ver original
  1. mysql> CALL sele_articulo();
  2. Query OK, 1 row affected (0.02 sec)

y después consultamos la variable de MySQL usada:

Código MySQL:
Ver original
  1. mysql> SELECT @variable MaximoPrecio;
  2. +--------------+
  3. | MaximoPrecio |
  4. +--------------+
  5. | patines      |
  6. +--------------+
  7. 1 row in set (0.00 sec)

Posdata: Como verás, estoy usando el mismo ejemplo de datos que usaste TU al postear el ejercicio el [url]http://www.lawebdelprogramador.com/foros/MySQL/1548243-comprueba-e-imprime.html[/url]

Este nuevo ejercicio también lo consultaste alli.
Exacto he posteado en varios foros , ya que en el foro del instituto tardan mucho en contestar , como digo y creo es algo obligatorio en forosdelweb el no venir a que te lo hagan si no con tu trabajo ya hecho , y mi intención es saber si fallo o no y en caso de hacerlo , el sitio donde fallo , Libra lleva razón y yo lo he pensado de hacerlo con un count , pero no es la idea , pero lo del max no lo había pensado , gracias por las respuestas

Etiquetas: Ninguno
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 07:38.