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

Como unir varias consultas que funcionan por separado

Estas en el tema de Como unir varias consultas que funcionan por separado en el foro de Mysql en Foros del Web. Buenas Tardes: Resulta que tengo varias consultas que me sirven por separado y me piden que las una en una sola consulta y que todos ...
  #1 (permalink)  
Antiguo 08/06/2014, 15:28
 
Fecha de Ingreso: junio-2014
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Como unir varias consultas que funcionan por separado

Buenas Tardes:

Resulta que tengo varias consultas que me sirven por separado y me piden que las una en una sola consulta y que todos los datos estén en una sola tabla a la hora de mostrarse...

1er Consulta:
Código MySQL:
Ver original
  1. SELECT e.nombre_equipo, COUNT(id_equipo_local+id_equipo_visitante) AS Partido_Jugados
  2. FROM equipo e, partido p
  3. WHERE e.id_equipo=p.id_equipo_local or
  4. e.id_equipo=p.id_equipo_visitante
  5. GROUP BY e.nombre_equipo;
2da Consulta:
Código MySQL:
Ver original
  1. SELECT e.nombre_equipo, count(goles_local+goles_visitante) as Ganados
  2. FROM equipo e, partido p
  3. WHERE e.id_equipo=id_equipo_local and
  4. goles_local>goles_visitante or
  5. e.id_equipo=id_equipo_visitante and
  6. goles_local<goles_visitante
  7. GROUP BY e.nombre_equipo;

3er Consulta:
Código MySQL:
Ver original
  1. SELECT e.nombre_equipo, count(goles_local+goles_visitante) as Empatados
  2. FROM equipo e, partido p
  3. WHERE e.id_equipo=id_equipo_local and
  4. goles_local=goles_visitante or
  5. e.id_equipo=id_equipo_visitante and
  6. goles_local=goles_visitante
  7. GROUP BY e.nombre_equipo;

Agradezco a quien pueda colaborarme, he intentado de multiples maneras pero me arroja errores, o si no me repite los nombres... Urgente Porfa!!!
  #2 (permalink)  
Antiguo 08/06/2014, 15:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como unir varias consultas que funcionan por separado

prueba a unirlas con UNION ALL
Mira en el manual. Usa los paréntesis
http://dev.mysql.com/doc/refman/5.0/es/union.html
  #3 (permalink)  
Antiguo 08/06/2014, 15:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 3 meses
Puntos: 2658
Respuesta: Como unir varias consultas que funcionan por separado

Estás cometiendo un error inicial al llamar una sola vez una tabla que debes llamar dos.
La relación entre EQUIPO y PARTIDO no es 1:1, sino 1:N, lo que implica que debe invocarse dos veces la tabla EQUIPO con uso de alias.
La query base es:
Código MySQL:
Ver original
  1. SELECT e.nombre_equipo, COUNT(DISTINCT p.id_equipo_visitante) Partido_Jugados
  2. FROM equipo E1 INNER JOIN partido P ON E1.id_equipo = P.id_equipo_local
  3. INNER JOIN equipo E2 ON E2.id_equipo = p.id_equipo_visitante
  4. GROUP BY e.nombre_equipo;

Nota: No uses JOIN implícitos en consultas de esta clase. Tienden a generar productos cartesianos.
Nota2: PIendsa bien lo que estás mandando a contar. Una condición como esta:
Código MySQL:
Ver original
  1. count(goles_local+goles_visitante)
no tiene sentido.
Francamente sin conocer la estructura de ambas tablas, no se entiende bien cómo obtener el resumen de resultados. Estoy suponiendo que los goles están en latabla de partidos, pero puede no ser así.
Postea la estructura de tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 08/06/2014, 16:50
 
Fecha de Ingreso: junio-2014
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Como unir varias consultas que funcionan por separado

ummm es q en esa sentencia estoy es contando cuantos son los registros, y pues como comente arriba las consultas por separado sirven bn y los datos q me arrojan son correctos, el problema es cuando quiero el resultado de la consulta asi:

Equipo | partidos jugados | partidos ganados | partidos empatados... etc.

intente unirlas de esta manera:

Select e.nombre_equipo, PG, PE
from equipo e, (SELECT count(goles_local+goles_visitante) as Ganados
FROM equipo e, partido p
WHERE e.id_equipo=id_equipo_local and
goles_local>goles_visitante or
e.id_equipo=id_equipo_visitante and
goles_local<goles_visitante
GROUP BY e.nombre_equipo) As PG,
(SELECT count(goles_local+goles_visitante) as Empatados
FROM equipo e, partido p
WHERE e.id_equipo=id_equipo_local and
goles_local=goles_visitante or
e.id_equipo=id_equipo_visitante and
goles_local=goles_visitante
GROUP BY e.nombre_equipo) AS PE;

Pero se repiten los datos... :/ no c si me hice entender.. agradezco tu ayuda ;)
  #5 (permalink)  
Antiguo 09/06/2014, 09:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como unir varias consultas que funcionan por separado

No lo he probado, pero tal vez esto...
Código MySQL:
Ver original
  1. SELECT t1.nombre_equipo, t1.Partido_Jugados, t1.Ganados, Empatados FROM ((SELECT e.nombre_equipo, COUNT(id_equipo_local+id_equipo_visitante) Partido_Jugados, '' Ganados, '' Empatados
  2. FROM equipo e, partido p
  3. WHERE e.id_equipo=p.id_equipo_local or
  4. e.id_equipo=p.id_equipo_visitante
  5. GROUP BY e.nombre_equipo)
  6. (SELECT e.nombre_equipo, '' Partidos_Jugados, count(goles_local+goles_visitante) Ganados, '' Empatados
  7. FROM equipo e, partido p
  8. WHERE e.id_equipo=id_equipo_local and
  9. goles_local>goles_visitante or
  10. e.id_equipo=id_equipo_visitante and
  11. goles_local<goles_visitante
  12. GROUP BY e.nombre_equipo)
  13. (SELECT e.nombre_equipo, count(goles_local+goles_visitante) Empatados
  14. FROM equipo e, partido p
  15. WHERE e.id_equipo=id_equipo_local and
  16. goles_local=goles_visitante or
  17. e.id_equipo=id_equipo_visitante and
  18. goles_local=goles_visitante
  19. GROUP BY e.nombre_equipo))t1 GROUP BY t1.nombre_equipo

Etiquetas: funcionan, select, separado, tabla
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 01:24.