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

[SOLUCIONADO] Duda sobre "replace"

Estas en el tema de Duda sobre "replace" en el foro de Mysql en Foros del Web. Buenas, hace un par de días que le estoy dando vueltas a un ejercicio, y ya que no me sale voy a preguntar aquí a ...
  #1 (permalink)  
Antiguo 11/03/2014, 08:12
 
Fecha de Ingreso: marzo-2012
Ubicación: Menorca
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Duda sobre "replace"

Buenas, hace un par de días que le estoy dando vueltas a un ejercicio, y ya que no me sale voy a preguntar aquí a ver si alguien me puede ayudar
El ejerciciodice: "La empresa quiere recoger en una tabla las actuaciones cuyo tiempo de realización no coincide con el tiempo estimado." Para ello debo crear una tabla llamada DIFERENCIAS con las columnas Referencia, Descripcion y Diferencia.
En la creación de la tabla no hay problema, pero el problema viene en la sentencia de después:

Código SQL:
Ver original
  1. REPLACE INTO DIFERENCIAS (Referencia, Descripcion, Diferencia)
  2. SELECT ACTUACIONES.Referencia, ACTUACIONES.Descripcion, ABS(ACTUACIONES.TiempoEstimado-REALIZAN.Horas)
  3. FROM ACTUACIONES, REALIZAN
  4. WHERE REALIZAN.Horas!=ACTUACIONES.TiempoEstimado;

Lo hago con replace porque con INSERT daba problema con la clave primaria. Con esta sentencia parece que va todo bien, pero me saca todos los valores aunque la clausula where no se cumpla. Hasta donde puedo deducir, tengo que relacionar de alguna forma las Horas de la tabla realizan con el TiempoEstimado de la tabla actuaciones, el problema es que no se me ocurre ninguna forma. Decir también que en la tabla Realizan la clave primaria y ajena es Referencia de la tabla actuaciones.

A ver si me podeis ayudar, que yo ya tengo la cabeza frita de pensar en la solución jajaja.

Saludos

Última edición por gnzsoloyo; 11/03/2014 a las 14:42
  #2 (permalink)  
Antiguo 11/03/2014, 14:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda sobre "replace"

Necesitamos más información sobre los tablas, sus campos, la naturaleza de esos campos y ejemplos de valores con el resultado esperado. A simple vista no me gusta esto:
ABS(ACTUACIONES.TiempoEstimado-REALIZAN.Horas)
FROM ACTUACIONES, REALIZAN
WHERE REALIZAN.Horas!=ACTUACIONES.TiempoEstimado;

y lo digo porque no sé cómo guardas el tiempo estimado, si son valores numéricos o de qué tipo. Tampoco entiendo por qué no relacionas las tablas ACTUACIONES y REALIZAN mediante INNER JOIN, que sería lo esperado, aunque tendrías que decirnos cuáles son los campos y cómo se relacionan.
  #3 (permalink)  
Antiguo 11/03/2014, 14:49
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: Duda sobre "replace"

Como te dice @jurena, no queda claro qué relaciona la tabla Actuaciones con la tabla Realizan. Es decir: ¿Cómo identificas a qué "actuación" corresponte una "realización"? ¿Qué campo las vincula?
Otra cosa que no queda claro es si una "actuación" se cubre con una única realización o varias. Ese caso podría ocurrir si una "realización" es ejecutada por más de una persona o más de una acción, reflejada en esa segunda tabla... lo cual se reflejaría a su vez en la sintaxis de la consulta.
En definitiva, hay al menos dos cosas a considerar:
1) Usar REPLACE es una muy mala idea, porque esa sentncia reemplaza los valores existentes, y no los actualiza, que sería un caso no considerado.
2) Hacer una resta y tomar su valor absoluto puede dar una medida errónea, por cuando no te indica si la diferencia es en un sentido de tiempo ahorrado o tiempo excedido. Y no son la misma cosa para una organización.

En cualquier caso, necesitamos mejor información para darte un buen consejo. Con lo que pones, no alcanza.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/03/2014, 14:49
 
Fecha de Ingreso: marzo-2012
Ubicación: Menorca
Mensajes: 13
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Duda sobre "replace"

Ya está resuelto, gracias! Efectivamente con el inner join funciona, además ahora funciona igualmente con el insert y no hace falta usar replace. A veces las soluciones son mas simples de lo que parece

Última edición por M_Bosch; 11/03/2014 a las 14:57

Etiquetas: select, tabla
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 08:12.