MySQL - Select * from hell;
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. También te puede interesar...
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;
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. ArmandoManuel error access denied for... |