Foros del Web » Programando para Internet » PHP »

problemas al hacer un update de un select

Estas en el tema de problemas al hacer un update de un select en el foro de PHP en Foros del Web. Hola a todos : tengo este select: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original SELECT b . numero_fac FROM ac_sura a , facturas_sura b where a ...
  #1 (permalink)  
Antiguo 12/12/2012, 13:58
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Información problemas al hacer un update de un select

Hola a todos :
tengo este select:

Código PHP:
Ver original
  1. SELECT b.numero_fac FROM ac_sura a, facturas_sura b where a.num_autorizacion=b.orden

Me funciona perfecto, pero al hacer el update:

Código PHP:
Ver original
  1. UPDATE ac_sura SET num_factura = (SELECT b.numero_fac FROM ac_sura a, facturas_sura b where a.num_autorizacion=b.orden)

donde ac_sura es la tabla a la cual quiero que en el campo num_factura le haga la actualizacion de los registros encontrados arroja el siguente error

YOU CAN´T SPECIFY TARGET TABLE 'AC_SURA' FOR UPDATE FROM CLAUSE

que error estoy cometiendo?, me encuentro programando en PHP con mysql

gracias
  #2 (permalink)  
Antiguo 12/12/2012, 14:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problemas al hacer un update de un select

Haz ese select aparte y verifica que te trae, si te trae multiples valores entonces el problema es que quieres corregir un valor con multiples valores.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/12/2012, 14:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problemas al hacer un update de un select

Por regla general, no puedes modificar una tabla y a la vez seleccionar de ella.

Revisa esto: http://dev.mysql.com/doc/refman/5.0/...trictions.html
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 12/12/2012, 14:04
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problemas al hacer un update de un select

david me podes dar una referencia de como puedo actualizar ese campo de esa tabla?
  #5 (permalink)  
Antiguo 12/12/2012, 14:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problemas al hacer un update de un select

Pero la documentación que te dio tiene bastantes ejemplo. Pero como te indique es que quieres modificar un valor con multiples selecciones. Verifica la documentación que te dio David para que veas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 12/12/2012, 14:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problemas al hacer un update de un select

Muéstranos la estructura de las tablas y qué dato y cómo exactamente necesitas actualizar.
Cita:
Iniciado por abimaelrc Ver Mensaje
Pero la documentación que te dio tiene bastantes ejemplo. Pero como te indique es que quieres modificar un valor con multiples selecciones. Verifica la documentación que te dio David para que veas.
Si te refieres a que la consulta SELECT devuelva varios valores, no, no es precisamente eso. Está usando la misma tabla en el UPDATE y en el SELECT, ese es el problema y eso fue lo que le indiqué con la referencia.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 12/12/2012, 14:17
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problemas al hacer un update de un select

TABLA AC SURA
num_factura
cod_prestador
num_autorizacion

TABLA FACTURAS_SURA
orden
detalle
numero_fac

Quiero que en el campo num_factura me escriba el valor del campo numero_fac donde el campo orden de la tabla FACTURAS_SURA sean iguales a num_autorizacion de la tabla AC_SURA
  #8 (permalink)  
Antiguo 12/12/2012, 14:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problemas al hacer un update de un select

Cita:
Iniciado por David Ver Mensaje
Muéstranos la estructura de las tablas y qué dato y cómo exactamente necesitas actualizar.
Si te refieres a que la consulta SELECT devuelva varios valores, no, no es precisamente eso. Está usando la misma tabla en el UPDATE y en el SELECT, ese es el problema y eso fue lo que le indiqué con la referencia.
Ohhh es que no me fije que era la misma tabla, solo vi la consulta por encima pero verificando que tuviera un limit al final. Ok ya veo porque le sugeriste
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 12/12/2012, 14:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problemas al hacer un update de un select

Entonces más bien sería algo como:
Código MySQL:
Ver original
  1. UPDATE ac_sura a SET num_factura = (SELECT numero_fac FROM facturas_sura WHERE orden = a.num_autorizacion)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 12/12/2012, 14:34
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: problemas al hacer un update de un select

arroja le siguiente error

subquery returns more tha 1 row
  #11 (permalink)  
Antiguo 12/12/2012, 14:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problemas al hacer un update de un select

Usa LIMIT 1 para que devuelva una única fila.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 12/12/2012, 14:45
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Información Respuesta: problemas al hacer un update de un select

David, funciono , no sabes la ayuda que me diste porque llevaba 3 horas con esto el codigo resultante fue este

Código PHP:
UPDATE ac_sura a SET num_factura = (SELECT numero_fac FROM facturas_sura WHERE orden a.num_autorizacion LIMIT 1

Etiquetas: mysql
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 00:07.