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

Update con datos de la misma tabla

Estas en el tema de Update con datos de la misma tabla en el foro de Mysql en Foros del Web. Buenas gente, soy nuevo y no se si ya se ha consultado esto, perdón si es así. Les comento que estoy iniciando recién en mi ...
  #1 (permalink)  
Antiguo 13/07/2015, 09:56
 
Fecha de Ingreso: julio-2015
Mensajes: 1
Antigüedad: 8 años, 9 meses
Puntos: 0
Información Update con datos de la misma tabla

Buenas gente, soy nuevo y no se si ya se ha consultado esto, perdón si es así.

Les comento que estoy iniciando recién en mi mysql y no puedo lograr actualizar una tabla temporal con datos de la misma. Espero que me puedan ayudar. A continuación pongo el código que no me esta funcionando. Saludos y gracias.

Código MySQL:
Ver original
  1. CREATE TABLE test_sp_horario_standar
  2. (
  3.     id_fila INT(11),
  4.     sucursal INT(2),
  5.     turno INT(2),
  6.     dia INT(2),
  7.     usuario VARCHAR(10),
  8.     nro_soli INT(5),
  9.     cant_fila_turno INT(4)
  10. );
  11.  
  12. (
  13.     sucursal    INT(2),
  14.     turno       INT(2),
  15.     cantidad    INT(2)
  16. );
  17.  
  18. INSERT INTO filas
  19. SELECT  DISTINCT t.sucursal,
  20.         t.turno,
  21.         (
  22.             SELECT  COUNT(*)
  23.             FROM    test_sp_horario_standar t2
  24.             WHERE   t.sucursal = t2.sucursal
  25.             AND     t.turno = t2.turno
  26.             AND     t.dia = t2.dia
  27.             GROUP BY t.dia
  28.         )
  29. FROM    test_sp_horario_standar t;
  30.  
  31. UPDATE  f
  32. FROM    filas f
  33. SET cantidad =  (
  34.                     SELECT  MAX(cantidad)
  35.                     FROM    filas f2
  36.                     WHERE   f.sucursal = f2.sucursal
  37.                     AND     f.turno = f2.turno
  38.                 );
  39.  
  40. SELECT  sucursal, turno, cantidad
  41. FROM    filas
  42. ORDER BY sucursal, turno, cantidad;

Última edición por gnzsoloyo; 13/07/2015 a las 10:54
  #2 (permalink)  
Antiguo 13/07/2015, 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: 16 años, 4 meses
Puntos: 2658
Respuesta: Update con datos de la misma tabla

Primero, decir que "no me esta funcionando" no es información útil.
¿No te funciona en qué sentido? ¿Como ejecutas el script? ¿Qué resultados obtienes? ¿Qué errores te devuelve?

Segundo, si bien las tablas temporary son poderosas, hay que tener en cuenta que el script debe ejecutarse sin interrupciones de conexión, porque si no la tabla desaparece... porque es TEMPORARY.
Las tablas de ese tipo son mas eficientes si las trabajas dentro de los stored procedures. Si lo haces en interfaces del tipo phpMyadmin, te comento que usualmente no funcionan.

Finalmente, te comento que en MySQL esto no se admite:
Código MySQL:
Ver original
  1. UPDATE  f
  2. FROM    filas f
  3. SET cantidad =  (
  4.                     SELECT  MAX(cantidad)
  5.                     FROM    filas f2
  6.                     WHERE   f.sucursal = f2.sucursal
  7.                     AND     f.turno = f2.turno
  8.                 );
MySQL no permite que se escriba la misma tabla que se está leyendo.

Además que es un error innecesario guardar campos calculables.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: group, select, sql, tabla, update
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 21:09.