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

[SOLUCIONADO] update con subconsulta

Estas en el tema de update con subconsulta en el foro de Mysql en Foros del Web. holas bueno tengo un problemilla con una consulta. tengo una db con una tabla entrevista que pertenecen a alumnos, se supone que siempre mostrara la ...
  #1 (permalink)  
Antiguo 16/09/2013, 08:14
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 3 meses
Puntos: 1
update con subconsulta

holas
bueno tengo un problemilla con una consulta.
tengo una db con una tabla entrevista que pertenecen a alumnos, se supone que siempre mostrara la ultima entrevista realizada a ese alumno,
Cita:
------------
entrevista
------------
-id_pk
-rutalumno_fk
-fecha
-observacion
-------------
entonses ya realizada la entrevista, solo queda actualizar el campo observacion (que este queda vacio al momento de realizar la entrevista), y se supone que tiene que actalizarse el ultimo registro de entrevista realizado para ese alumno.

pense en algo asi
Código MySQL:
Ver original
  1. UPDATE entrevista SET observacion='nueva observacion' where id_fk=(SELECT max(id_fk) FROM entrevista WHERE rutalumno_fk='22222222-2')

esa consulta es de acuerdo a la tabla que escribi arriba para que se entienda mi idea, originalmente esta es la consulta
Código MySQL:
Ver original
  1. update c_entrevista as e set e.ent_observaciones='nueva observacion'
  2. where e.ent_pk_id =(select max(ent_pk_id) from c_entrevista as cc where cc.ent_fk_alumno='22.222.222-2' )

pero no me funciona, me tira un error en el phpmyadmin (#1093 - You can't specify target table 'e' for update in FROM clause)

obviamente esto lo puedo hacer con 2 consultas distintas pero quiero optimizar codigo.
espero que me ayuden ya que nunca he echo una subconsulta en update y crei que la sintaxis era igual que en los select

Última edición por gnzsoloyo; 16/09/2013 a las 08:21
  #2 (permalink)  
Antiguo 16/09/2013, 08:27
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 subconsulta

Cita:
nunca he echo una subconsulta en update y crei que la sintaxis era igual que en los select
Primero, no creas nada que no te asegures previamente en el manual de referencia. Para eso existen.
Segundo: No es opcional. MySQL no admite hacer un UPDATE sobre la misma tabla que haces el SELECT. Simplemente no te dejará, sin importar de qué forma lo intentes. es una restricción del DBMS que existe por seguridad de procesos.
Digamoslo así: Es para evitar cortar la rama en la que estás parado.
Si estuvieras actualizando el mismo campo que usas para buscar el registro, ¿en qué estado está? ¿Cuál es el valor al momento de ejecutarse? ¿Contiene el valor nuevo, o el que tenía?
Si lo piensas, es una situación insegura.
Por esa misma razón, no se perite tampoco borrar y consultar la misma tabla en la misma sentencia.

Existen algunos DBMS que si tienen implementado esa posibilidad, pero lo hacen dentro de un proceso en que se genera un registro o tabla en memoria que contiene los cambios, al estilo de lo que en MySQL se implementa para eso con un stored procedure.
Si quieres hacerlo, te recomiendo usar SP.
__________________
¿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 16/09/2013, 08:40
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: update con subconsulta

bueno tendre que ver como hacerlo con Store Procedure, mientras veo eso... no hay otra forma de realizar ese registro sin subconsulta ni sp?
  #4 (permalink)  
Antiguo 16/09/2013, 08:56
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 subconsulta

Creo que eso ya quedó claro cuando te digo que MySQL no admite que hagas un UPDATE sobre la misma tabla que haces el SELECT.
Simplemente, eso no existe en MYSQL.
O lo haces en dos etapas (SELECT y UPDATE), o bien lo haces en un SP.
__________________
¿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: phpmyadmin, sql, subconsultas
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 12:18.