MySQL - Select * from hell;

 
Vista:

Select * from hell;

Publicado por Txarly (2 intervenciones) el 04/12/2009 09:28:24
Buenas a todos.
Sobre una BD de una competición deportiva por equipos.

He de resolver una consulta un tanto larga, la cuestión se me atraganta cuando llego al punto en que he de encontrar el nombre de los equipos que han ganado n veces como visitante.

Mi idea inicial era: (con 3 victorias de visitante)

select partido.nombre_visitante from partido where 3<(select count(partido.pts_visitante > partido.pts_local));

Y utilizar un group by al final. Obviamente esto es una magna chapuza que no funciona. La cosa es que tengo la sensación de que no puede ser muy complicado, pero no lo veo.

Muchas gracias y 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

RE:Select * from hell;

Publicado por Gonzalo GC (339 intervenciones) el 04/12/2009 12:17:04
No se puede usar funciones de agrupamiento en el WHERE. Para eso existe el HAVING.
Sería mas o menos así:

SELECT nombre_visitante
FROM partido
HAVING COUNT(pts_visitante)>=3
GROUP BY nombre_visitante;

Esto devolvería el nombre_visitante de aquellos equipos que tengan un valor no nulo en pts_visitante. Si el campo puede tener cero (0) y no NULL, y cada punto es una victoria, es mejor usar SUM:

SELECT nombre_visitante
FROM partido
HAVING SUM(pts_visitante)>=3
GROUP BY nombre_visitante;

o bien

SELECT nombre_visitante, SUM(pts_visitante) puntos
FROM partido
HAVING puntos>=3
GROUP BY nombre_visitante;
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

RE:Select * from hell;

Publicado por Txarly (2 intervenciones) el 04/12/2009 12:55:23
Muchas gracias por tu respuesta. En realidad los puntos hacen referencia a canastas marcadas por partido, son equipos de baloncesto, culpa mia por no especificar más.

De todos modos creo que con el 'having' podré solucionar la consulta. La verdad es que no lo he tenido en cuenta en ninigún momento, no lo recordaba.

Gracias y 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