MySQL - por favor ayuda urgente

   
Vista:

por favor ayuda urgente

Publicado por eduardo (5 intervenciones) el 21/09/2011 06:58:07
tengo que terminar una consulta de actualizacion para el trabajo y no estoy pudiendo resolverla.
Arme una consulta y al resultado de ésta necesito hacerle un update con un valor a toda la columna pero me tira error.

al resultado de esta consulta:

select c.id_convocado, c.con_nombre, c.con_apellido, c.con_otros, count(c.id_convocado), group_concat(mar_nombre)
from convocado c
inner join instancia_rol_personaje_convocado irpc on irpc.id_convocado = c.id_convocado
inner join instancia_rol_personaje irp on irp.id_instancia_rol_personaje = irpc.id_instancia_rol_personaje
inner join instancia i on i.id_instancia = irp.id_instancia
inner join spot s on s.id_spot = i.id_spot
inner join marca m on m.id_marca = s.id_marca
where i.id_instancia_tipo = 2
group by c.id_convocado, c.con_nombre, c.con_apellido
having count(c.id_convocado) < 2

necesito hacerle:
update convocado
set con_otros='GOLD'

o sea al resultado que me tira necesito hacerle ese update.

Alguien sabria cómo se hace?

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

por favor ayuda urgente

Publicado por martin (150 intervenciones) el 21/09/2011 19:22:14
Con la instruccion UPDATE se puede, supongamos que el id es id_convocado

te quedaria asi

UPDATE convocado SET con_otros='GOLD'
WHERE id_convocado IN
(select c.id_convocado FROM
from convocado c
inner join instancia_rol_personaje_convocado irpc on irpc.id_convocado = c.id_convocado
inner join instancia_rol_personaje irp on irp.id_instancia_rol_personaje = irpc.id_instancia_rol_personaje
inner join instancia i on i.id_instancia = irp.id_instancia
inner join spot s on s.id_spot = i.id_spot
inner join marca m on m.id_marca = s.id_marca
where i.id_instancia_tipo = 2
group by c.id_convocado
having count(c.id_convocado) < 2)

O algo asi, donde en el select te traigas todos los id a actualizar.


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por eduardo (5 intervenciones) el 22/09/2011 02:32:38
te agradezco la respuesta ... se que es por ahi pero por alguna razon no funca.
slds
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por martin (150 intervenciones) el 22/09/2011 05:30:31
que error te da?
como te quedo el update?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por eduardo (5 intervenciones) el 22/09/2011 14:12:56
UPDATE casting.convocado SET con_otros='SILVER'
WHERE count(c.id_convocado) IN
(select c.id_convocado
from casting.convocado c
inner join casting.instancia_rol_personaje_convocado irpc on irpc.id_convocado = c.id_convocado
inner join casting.instancia_rol_personaje irp on irp.id_instancia_rol_personaje = irpc.id_instancia_rol_personaje
inner join casting.instancia i on i.id_instancia = irp.id_instancia
inner join casting.spot s on s.id_spot = i.id_spot
inner join casting.marca m on m.id_marca = s.id_marca
where i.id_instancia_tipo = 2
having count(c.id_convocado) < 2)

me tira : Error Code : 1109
Unknown table 'c' in IN/ALL/ANY subquery
(0 ms taken)

o sea yo cambié convocado x count(c.id_convocado) en el where porque esa es la columna en la consulta del select que me condiciona.igual inicialmente lo habia probado con convocado

como vos me lo pasaste , tal cual... me tiraba : Error Code : 1046
No database selected
(0 ms taken)


se que estoy cerca pero , cambie lo que le cambie no estoy pudiendo.

mil gracias che
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por Martin (150 intervenciones) el 22/09/2011 14:45:50
WHERE count(c.id_convocado) IN es lo que esta mal, simplemente sacale la c y dejalo asi

WHERE count(id_convocado) IN

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por eduardo electrodryn@gmail.com (5 intervenciones) el 22/09/2011 15:58:15
UPDATE casting.convocado SET con_otros='SILVER'
WHERE count(id_convocado) IN
(select c.id_convocado
from casting.convocado c
inner join casting.instancia_rol_personaje_convocado irpc on irpc.id_convocado = c.id_convocado
inner join casting.instancia_rol_personaje irp on irp.id_instancia_rol_personaje = irpc.id_instancia_rol_personaje
inner join casting.instancia i on i.id_instancia = irp.id_instancia
inner join casting.spot s on s.id_spot = i.id_spot
inner join casting.marca m on m.id_marca = s.id_marca
where i.id_instancia_tipo = 2
having count(c.id_convocado) < 2)


si lo pongo asi me tira: Error Code : 1093
You can't specify target table 'convocado' for update in FROM clause

mira que : [count(c.id_convocado) es el nombre de la columna resultado de la consulta , que me interesa .

Fijate que en la primer consulta esta en el select. con esa consulta me tira los resultados perfectamente pero no se como usarla como subconsulta del update.
o sea, el resultado tira varias columnas, una de ellas es count(c.id.convocado) y alos registros de toda esa columna quisiera ponerles SILVER.

Desde ya gracias Martin

Abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por martin (150 intervenciones) el 23/09/2011 00:03:58
Bueno, en realidad no podes poner en el where count, tenes que poner solo id_convocado, por que este hace referencia a la tabla del update y no de la subconsulta

UPDATE casting.convocado SET con_otros='SILVER'
WHERE(id_convocado) IN
(select c.id_convocado....etc etc)

de todos modos el error que te tira ahora es que no podes usar en una subconsulta la misma tabla que vas a actualizar.

Con lo cual no tendrias que sacar esa tabla de la subconsulta,
no podes llegar a lo mismo sin usar en esa tabla?
Veo que usas el count para filtrar tu consulta, si hay otra tabla que produsca esa multiplicacion, la podes usar y sacar a la tabla convocado.

SAludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por favor ayuda urgente

Publicado por Eduardo (5 intervenciones) el 23/09/2011 00:12:05
Ya te entendí Martin .
Mil gracias Che

Abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar