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

Cambiar el valor de la columna de una subconsulta.

Estas en el tema de Cambiar el valor de la columna de una subconsulta. en el foro de Mysql en Foros del Web. Buenas, estoy intentando cambiar el valor de una columna de todos los registros de una subconsulta. Al intentarlo con update me dice que una tabla ...
  #1 (permalink)  
Antiguo 02/06/2014, 05:23
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años
Puntos: 0
Cambiar el valor de la columna de una subconsulta.

Buenas, estoy intentando cambiar el valor de una columna de todos los registros de una subconsulta. Al intentarlo con update me dice que una tabla derivada no es updateable. Como podria hacerlo??? Hay alguna forma al indicar las columnas que quiero mostrar ( en el mismo select) de indicar que una determinada que columna tenga un valor??


Gracias y un saludo!!!

Última edición por lolo435; 02/06/2014 a las 05:30
  #2 (permalink)  
Antiguo 02/06/2014, 05: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: 16 años, 4 meses
Puntos: 2658
Respuesta: Cambiar el valor de la columna de una subconsulta.

Postea la consulta para ver lo que realmente estás intentando hacer.
__________________
¿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 02/06/2014, 06:09
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años
Puntos: 0
Respuesta: Cambiar el valor de la columna de una subconsulta.

La subconsulta es un peñazco pero lo voya explicar con otro ejemplo

SELECT AÑO_MES,NOMBRE_FILIAL,CODIGO_FILIAL, COD_SUBSERVICIO, COUNT( CODIGO_FILIAL)

FROM correo

GROUP BY NOMBRE_FILIAL


Bueno pues en vez de que me muestre COD_SUBSERVICIO = SB02 que es lo que pone en la tabla correo, quiero que me ponga SB08 , pero claro no puedo hacerle un update a la subconsulta.

Si, que por definicion es una porqueria lo que estoy haciendo, pero el cliente nos esta proporcionando los datos asi.

Es posible hacer lo que pretendo?? o es necesario crear una tabla ''fisica'' donde poder updatear el codigo del subservicio?

Gracias!
  #4 (permalink)  
Antiguo 02/06/2014, 17:51
 
Fecha de Ingreso: mayo-2014
Ubicación: Cali
Mensajes: 6
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Cambiar el valor de la columna de una subconsulta.

Hola amigo, no se si te entienda bien, pero supongo que quieres actualizar una tabla mediante una subconsulta.

La sintaxis seria asi:

UPDATE tabla
SET columna = nuevoValor
WHERE Valor OPERADOR SUBCONSULTA

Si deseas ver ejemplos reales, mira este enlace
Cita:
Editado: Autopromo
  #5 (permalink)  
Antiguo 03/06/2014, 06:22
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años
Puntos: 0
Respuesta: Cambiar el valor de la columna de una subconsulta.

Cita:
Iniciado por jamesreveu Ver Mensaje
Hola amigo, no se si te entienda bien, pero supongo que quieres actualizar una tabla mediante una subconsulta.

La sintaxis seria asi:

UPDATE tabla
SET columna = nuevoValor
WHERE Valor OPERADOR SUBCONSULTA

Si deseas ver ejemplos reales, mira este enlace

No es eso, lo que quiero es actualizar una subconsulta.
  #6 (permalink)  
Antiguo 03/06/2014, 08:45
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: Cambiar el valor de la columna de una subconsulta.

Vamos a lo básico: Lo que dices estar intentando es realizar un UPDATE sobre el resutlado de una subconsulta.
Según entiendo, la idea sería algo como
Código SQL:
Ver original
  1. UPDATE (SELECT a, b, c, d FROM tabla) t1
  2. SET T1.a =
  3. WHERE T1.c = xxx
Bueno, eso por empezar es ilegal. No puedes hacer en ningún DBMS que yo maneje, un UPDATE sobre una tabla derivada, por la más simple razón de todas: No existe esa tabla.

Una tabla derivada no tiene existencia real. Es un conjunto de datos en el buffer de consultas, y no una tabla en memoria. Son cosas totalmente diferentes.
Una tabla en memoria es una tabla declarada sobre el motor MEMORY, o bien una tabla creada comol TEMPORARY, esto en MySQL). Ambos tipos de tabla existen en el diccionario de datos, y por consecuencia tienen reservado un espacio de tablas.
No es el caso de una tabla derivada. Esta es un resultado en un buffer de solo lectura, y no permite actualización. Son los datos que el cliente lee, o datos sobre los que se aplican otros niveles de lectura (select dfe select), para volver a ponerlos en el buffer.

Precisamente por esa razón te pedi que pusieras la query que estás usando, y ninguna query supuesta como la que pusiste sirve, ya que no representa lo que quieres lograr.
Postea la query real. Partiremos de alli para entender la solución.
Pero no pongas una query simulada ni "parecida". Si no vemos lo que estás haciendo tendremos que hacer muchísimas suposiciones, de las cuales probablemente no sirva ninguna.
__________________
¿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: columna, registro, tabla, valor
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:30.