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

subconsultas dentro de consultas.

Estas en el tema de subconsultas dentro de consultas. en el foro de Mysql en Foros del Web. Buenas, tengo una duda respecto a las subconsultas en mysql. Tengo en resultado de dos consultas, llamémoslas: consulta1 y consulta2 consulta 1 es del estilo ...
  #1 (permalink)  
Antiguo 15/04/2014, 08:01
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 7 meses
Puntos: 0
subconsultas dentro de consultas.

Buenas, tengo una duda respecto a las subconsultas en mysql.

Tengo en resultado de dos consultas, llamémoslas:

consulta1 y consulta2

consulta 1 es del estilo (tiene mas columnas pero son estas dos las que me interesan):

COD_GRUPO IMPORTE

1 345
2 567
3 9877


consulta2 es del estilo

COD_GRUPO TOTAL USUARIOS

1 25
2 12
3 145


Lo que quiero es hacer una consulta que utilice estos datos y los de la tabla Usuarios ( donde están definidos los usuarios y las unidades equivalentes a cada uno de la forma


COD_USuario Unidades

1 2
2 1
3 1
4 4


De tal forma que primero:


Indique la proporcion del importe por unidad de grupo, es decir, la division entre el importe de la consulta1 y el total de usuarios de la consulta 2.

Una vez calculado esto, quiero multiplicarlo por el numero de unidades de cada usuario. Para ello tb tengo una tabla donde se relacionan los usuarios y el grupo al que pertenece que es de la forma:

COD_USuario COD_GRUPO

1 3
1 7
1 9
2 4
2 7
2 9

Como podeis ver un usuario puede pertenecer a grupos distintos.


Alguien me echa una mano porfavor? Puedo utilizar el resultado de las subconsultas como tablas normales??


Muchas gracias por adelantado!!!

Edit : a pesar de haber colocado cada dato debajo de su columna, salen pegadas a la primera columna
  #2 (permalink)  
Antiguo 16/04/2014, 02:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: subconsultas dentro de consultas.

Código MySQL:
Ver original
  1.    (subconsulta1) aliasSbc1 [modificador] JOIN (subconsulta2) aliasSbc2 ON aliasSbc1.campo=aliasSbc2.campo.....

13.2.8. Sintaxis de subconsultas
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 16/04/2014, 02:53
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: subconsultas dentro de consultas.

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1.    (subconsulta1) aliasSbc1 [modificador] JOIN (subconsulta2) aliasSbc2 ON aliasSbc1.campo=aliasSbc2.campo.....

[URL="https://dev.mysql.com/doc/refman/5.0/es/subqueries.html"]13.2.8. Sintaxis de subconsultas[/URL]
Te importaria ponerme la sentencia completa?? El problema es que quiero operar con columnas de estas consultas y no se como hacerlo. Como comento en el primer mensaje quiero hacer una division y despues una multiplicacion ( entre las 3 subconsultas)

En select pongo las operaciones entre los campos que quiero?? Al hacer por ejemplo una multiplicacion

SELECT aliasSbc1.campo1*aliasSBC2.campo2

FROM

(subconsulta1) aliasSbc1 [modificador] JOIN (subconsulta2) aliasSbc2 ON aliasSbc1.campo=aliasSbc2.campo

En el enlace que me has puesto, solo veo cosas de hacer selects dentro de selects devolviendo un unico registro en la subconsulta y sin operar con ellos o cuando devuelve varios, comparar... pero yo lo que quiero es operar con columnas de las distintas subconsultas (como si fueran tablas propiamente dicho)

Sabes de algun sitio donde se explique bien todo esto?? no lo encuentro por ningun lado, si no es mucha molestia y me puedes explicar un poco..... :(:(:(:(:(

Un saludo y muchas gracias de nuevo!

Última edición por lolo435; 16/04/2014 a las 03:12
  #4 (permalink)  
Antiguo 16/04/2014, 03:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: subconsultas dentro de consultas.

Cita:
En el enlace que me has puesto, solo veo cosas de hacer selects dentro de selects devolviendo un unico registro en la subconsulta y sin operar con ellos o cuando devuelve varios, comparar... pero yo lo que quiero es operar con columnas de las distintas subconsultas (como si fueran tablas propiamente dicho)
Muestranos cómo son las consultas. Sin eso no sabemos qué es lo que quieres intentar hacer realmente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/04/2014, 04:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: subconsultas dentro de consultas.

Código MySQL:
Ver original
  1. SELECT aliasSbc1.campo1*aliasSBC2.campo2
  2. (subconsulta1) aliasSbc1 [modificador] JOIN (subconsulta2) aliasSbc2 ON aliasSbc1.campo=aliasSbc2.campo

Si esto seria correcto, debes tratar las subconsultas como si fueran tablas con la única diferencia que debes poner OBLIGATORIAMENTE un
alias y debes definirlas dentro de parentesis, lo mejor si mezclas subconsultas y tablas es que pongas alias a todo. (Obviamente subconsulta1 y 2 deben tener entre sus campos campo1 y 2 respectivamente.)

Los JOIN tambien se construyen igual que si fueran tablas....

Y finalmente las operaciones entre columnas tambien se hacen como si fueran entre columnas de tablas enlazadas....

http://www.forosdelweb.com/f86/opera...nsulta-846309/

Si construyes un SELECT que te trae todos los campos que necesitas para hacer tus calculos hacer las operaciones no debe ser un problema, entre valores de un registro claro.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: sql, subconsultas, tabla, usuarios
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 11:20.