muy buenas,
Estoy intentado actualizar una tabla en mysql de esta manera
UPDATE tabla
SET
tabla.campo = select indice from tabla 2 where comp = 1
Que estoy haciendo mal? Ya que me sale un error de sintaxis.
Saludos
| |||
Update con resultado de otra tabla muy buenas, Estoy intentado actualizar una tabla en mysql de esta manera UPDATE tabla SET tabla.campo = select indice from tabla 2 where comp = 1 Que estoy haciendo mal? Ya que me sale un error de sintaxis. Saludos |
| |||
Respuesta: Update con resultado de otra tabla Cita: Si bueno lo de tabla 2 lo he puesto para que se viera que era una tabla diferente, no tiene ningun numero. Cita: Si si la subselect revuelve un unico campoHace falta hacer un Join para un update tan simple? Cita: Antes de preguntar he buscado y supongo que es algo tan simple que no hay ni ejemplos.Gracias por eso |
| ||||
Respuesta: Update con resultado de otra tabla Cita: Las consultas imaginarias o supuestas, habitualmente redundan en diagnósticos imaginarios o falsos.Si bueno lo de tabla 2 lo he puesto para que se viera que era una tabla diferente, no tiene ningun numero. Postea los nombres de los objetos reales, tal y como son. Todo lo que omitas o generalices nos llevará a darte consejos equivocados. No supongas que por que tú sabes de lo que hablas nosotros también lo hacemos. Las generalizaciones omiten datos importantes para el análisis. Cita: ¿Qué te hace suponer que una consulta debe ser "compleja" para necesitar solucionarse con un JOIN?Hace falta hacer un Join para un update tan simple? Un JOIN se usa cuando debe usarse, es decir cuando hay una relación real entre dos o más tablas. Que sea simple o complejo es relativo. Cuando haces la consulta de la forma que la planeaste estás haciéndola ineficiente, lo que es peor que hacerla compleja. Cita: Hay decenas de posts preguntando el mismo tema. La clave es tener práctica para lograr obtener de los buscadores la respuesta que estás bsucando.Antes de preguntar he buscado y supongo que es algo tan simple que no hay ni ejemplos. Yo mismo respondí dos veces posts similares en esta última semana... Pero dado que suelo responder muchos, no estoy seguro de cuál fue el último. Yendo al caso, lo tuyo es tan sencillo como:
Código MySQL:
Pero este tipo de JOIN tiene como condición que bede existir una relación entre el registro a actualizar de la primera tabla y el registro de la segunda.Ver original En el caso de lo que propones tu, tiene un prblema básico: Tiene dos problemas: 1) Necesita paréntesis para encerrar el resultado de la subconsulta. 2) Como no hay un discriminante de la tabla afectada por el UPDATE, se haría un UPDATE de todos y cada uno de los registros de la primera tabla con ese único registro de la segunda. Yo a eso no le veo sentido. Postea la consulta real que estás usando.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Update con resultado de otra tabla Cita: Gracias por contestar tan rapido, he probado lo que tu me dices y no me funciona, entre las 2 tablas no existe relacion. Lo que quiero es actualizar el campo de una tabla con el resultado de otra select. La subconsulta lo he echo a parte y me devuelve un string.
Iniciado por gnzsoloyo Yendo al caso, lo tuyo es tan sencillo como:
Código MySQL:
Pero este tipo de JOIN tiene como condición que bede existir una relación entre el registro a actualizar de la primera tabla y el registro de la segunda.Ver original [/B] Pongo la consulta real para que no haya confusión.
Código MySQL:
Ver original Hago esto porque lo tengo puesto en un proceso automatico, la subconsulta conc_competidores devolvera diferentes valores segun el mes, necesito que se me actualize la tabla concesionario con ese campo. No se si me he explicado bien, haber si lo puedo conseguir. |
| |||
Respuesta: Update con resultado de otra tabla Gracias ya lo he solucionado he tenido que poner un alias a la tabla, yo pensaba que esto de poner alias es algo opcional UPDATE concesionario con SET con.marca = (select marca from comp_concesionario where competidor = 0) |
| ||||
Respuesta: Update con resultado de otra tabla Los alias no son opcionales cuando manipulas tablas que tienen campos con el mismo nombre, los cuales estás usando en la consulta. El DBMS no puede adivinar a cuál tabla pertenece el campo, a menos que se lo indiques específicamente, ya que en ese contexto el nombre es insuficiente. Precisamente por eso es que debes postear las consultas reales. Al generalizarla cambiando los nombres no había forma de saber que eso estaba pasando. Por otro lado, en ese contexto no debe haberte dado un error de sintaxis, sino un error de columna ambigua, lo que era una mejor pista. Recuerda siempre postear el mensaje textual que te está devolviendo. Decir "me da un error" la mayoría de las veces no alcanza para saber cuál es el error.
__________________ ¿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: |