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

Subquery para obtener 2 valores

Estas en el tema de Subquery para obtener 2 valores en el foro de Mysql en Foros del Web. Hola, necesito hacer una suquery y obtener 2 valores a partir de esta y ponerla como valores distintos en la query principal, lo que estoy ...
  #1 (permalink)  
Antiguo 07/05/2011, 16:14
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 15 años, 10 meses
Puntos: 2
Subquery para obtener 2 valores

Hola, necesito hacer una suquery y obtener 2 valores a partir de esta y ponerla como valores distintos en la query principal, lo que estoy haciendo actualmente es concatenar los valores con un punto, guardarlo como un solo valor y luego con PHP lo convierto en 2 valores, pero creo que de la otra forma va a ser más eficiente no?

De que manera podría lograr esto?
Gracias ^^
  #2 (permalink)  
Antiguo 07/05/2011, 16:23
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Subquery para obtener 2 valores

Muéstranos algo de lo que tienes hecho para poder entender un poco más que es lo que quieres.
  #3 (permalink)  
Antiguo 07/05/2011, 16:29
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Subquery para obtener 2 valores

Cita:
Iniciado por alexg88 Ver Mensaje
Muéstranos algo de lo que tienes hecho para poder entender un poco más que es lo que quieres.
Código:
SELECT
	tp.name,
	tp.id,
	(SELECT
		CONCAT(SUM(st1.`like`),'.',SUM(st1.dislike),'.',SUM(st1.visits))
		FROM `subtabla1` st1 JOIN subTabla2 st2 ON (st2.id = st1.st2id) WHERE st2.tpid = tp.id
	) as `stats`
FROM `tablaPrincipal` tp
Como pueden ver, hay una tabla principal, esta tabla principal es linkeada por otras tabla a través de un ID, y cada una de esas tablas tiene otras tablas que las linkean a través del ID, y estas tablas tienen las columnas "like", "dislike" y "visits", entonces las concateno a estas 3 con puntos y luego las desconcateno en PHP. Estoy casi seguro que se puede hacer con JOINS a la tabla principal directamente :P
  #4 (permalink)  
Antiguo 07/05/2011, 16:42
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Subquery para obtener 2 valores

Podría funcionar algo así, pruebalo a ver que sale:

Código SQL:
Ver original
  1. SELECT tp.name, tp.id,  SUM(st1.`like`), SUM(st1.dislike), SUM(st1.visits) 
  2. FROM tablaPrincipal tp
  3. JOIN subTabla2 st2  ON tp.id = st2.tpid
  4. JOIN subtabla st1 ON st2.id = st1.st2id
  5. GROUP BY tp.id, tp.name
  #5 (permalink)  
Antiguo 07/05/2011, 16:58
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Subquery para obtener 2 valores

Cita:
Iniciado por alexg88 Ver Mensaje
Podría funcionar algo así, pruebalo a ver que sale:

Código SQL:
Ver original
  1. SELECT tp.name, tp.id,  SUM(st1.`like`), SUM(st1.dislike), SUM(st1.visits) 
  2. FROM tablaPrincipal tp
  3. JOIN subTabla2 st2  ON tp.id = st2.tpid
  4. JOIN subtabla st1 ON st2.id = st1.st2id
  5. GROUP BY tp.id, tp.name
Genial! Funciona expléndidamente, muchísimas gracias! ^^
No sabía que se podía hacer un join de "arriba hacia abajo" :P

Edit: me encontré con el pequeño problema de que si uso la keyword SUM devuelve un solo valor ._.

Última edición por ZequeZ; 07/05/2011 a las 20:10 Razón: error
  #6 (permalink)  
Antiguo 08/05/2011, 14:04
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Subquery para obtener 2 valores

¿Cómo que te devuelve un sólo valor?

Creo que te refieres a que como no renombras las operaciones SUM te devuelve todo con el mismo nombre.

Para ello haz:

Código MySQL:
Ver original
  1. SELECT tp.name, tp.id, *SUM(st1.`like`) as likes, SUM(st1.dislike) as dislikes, SUM(st1.visits)* as visits
  2. FROM tablaPrincipal tp
  3. JOIN subTabla2 st2 *ON tp.id = st2.tpid
  4. JOIN subtabla st1 ON st2.id = st1.st2id
  5. GROUP BY tp.id, tp.name

Etiquetas: multiples, subquery
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 22:31.