Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Update SQL con SELECT anidado para obtener SUM en MySQL
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Update SQL con SELECT anidado para obtener SUM en MySQL

Publicar nuevo tema Responder al tema
Foros de discusión » MySQL Server, MySQL Client, motor de bd gratuito   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Update SQL con SELECT anidado para obtener SUM en MySQL Responder citando

Estoy desarrollando una aplicación web con PHP y MySQL, se trata de una aplicación para un club ciclista, tengo las siguientes tablas y sus campos más importantes:

* usuarios: bicikilometros, codigo.
* biker_rutasusuario: codigousuario, codigoruta.
* biker_etapa: codigo, km.

Como se puede intuir, en la tabla biker_etapa guardo las rutas de bicicleta que se van haciendo con todos sus datos, principalmente los km (kilómetros). Tengo otra tabla "biker_rutasusuario" donde guardo los usuarios que han realizado una determinada ruta, por lo que la tabla "biker_rutasusuario" está enlazada con la tabla "biker_etapa" por los campos "codigoruta" y "codigo" respectivamente. La tabla "biker_rutausuario" también enlaza con la tabla "usuarios" mediante los campos "codigousuario" y "codigo" respectivamente.

Lo que quiero es poder actualizar con un UPDATE (si se puede) el valor "bicikilometros" de la tabla "usuarios" obteniéndolo de la suma de los kilómetros realizados por cada ciclista en cada etapa o ruta.

¿Es posible hacer esto con una sola consulta SQL?

Os pongo la consulta SQL para sacar los kilómetros que ha realizado cada usuario, por si os sirve de algo:

Código:

select nra.codigousuario, sum(be.km)
from biker_rutasusuario nra, biker_etapa be
where be.codigo = nra.codigoruta
group by nra.codigousuario
order by 2 desc


No tengo muchos conocimientos de SQL ¿se puede actualizar un campo de la tabla del UPDATE con el valor obtenido de una SELECT? ¿se puede filtrar esta subselect con el valor de un campo de la tabla del UPDATE?
MensajePublicado:
Dom Oct 09, 2011 10:33 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Update SQL con SELECT anidado para obtener SUM en MySQL Responder citando



Anuncios



varios escribió:
Estoy desarrollando una aplicación web con PHP y MySQL, se trata de una aplicación para un club ciclista, tengo las siguientes tablas y sus campos más importantes:

* usuarios: bicikilometros, codigo.
* biker_rutasusuario: codigousuario, codigoruta.
* biker_etapa: codigo, km.

Como se puede intuir, en la tabla biker_etapa guardo las rutas de bicicleta que se van haciendo con todos sus datos, principalmente los km (kilómetros). Tengo otra tabla "biker_rutasusuario" donde guardo los usuarios que han realizado una determinada ruta, por lo que la tabla "biker_rutasusuario" está enlazada con la tabla "biker_etapa" por los campos "codigoruta" y "codigo" respectivamente. La tabla "biker_rutausuario" también enlaza con la tabla "usuarios" mediante los campos "codigousuario" y "codigo" respectivamente.

Lo que quiero es poder actualizar con un UPDATE (si se puede) el valor "bicikilometros" de la tabla "usuarios" obteniéndolo de la suma de los kilómetros realizados por cada ciclista en cada etapa o ruta.

¿Es posible hacer esto con una sola consulta SQL?

Os pongo la consulta SQL para sacar los kilómetros que ha realizado cada usuario, por si os sirve de algo:

Código:

select nra.codigousuario, sum(be.km)
from biker_rutasusuario nra, biker_etapa be
where be.codigo = nra.codigoruta
group by nra.codigousuario
order by 2 desc


No tengo muchos conocimientos de SQL ¿se puede actualizar un campo de la tabla del UPDATE con el valor obtenido de una SELECT? ¿se puede filtrar esta subselect con el valor de un campo de la tabla del UPDATE?


Sí que puedes hacerlo con una sola consulta SQL y sí que puedes utilizar el valor devuelto por una SELECT para actualizar un campo de una tabla, también utilizar el filtro que nos comentas.

Para actualizar una tabla obteniendo los datos de otra sería algo así:

Código:

update usuario nu
set nu.bicikilometros=(select sum(be.km)
from biker_rutasusuario nra, biker_etapa be
where be.codigo = nra.codigoruta and
      nra.codigousuario = nu.codigo)


Date cuenta que el valor con el que actualizamos el campo "usuario.bicikilometros" es el resultado de otra SELECT "anidada", incluso en esta SELECT anidada usamos como condición de filtro el valor del campo "usuario.codigo" de la tabla que queremos actualizar.
MensajePublicado:
Dom Oct 09, 2011 10:40 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » MySQL Server, MySQL Client, motor de bd gratuito  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A