Ayuda con sentencia sql

Iniciado por 50l3r, 23 Marzo 2010, 15:58 PM

0 Miembros y 1 Visitante están viendo este tema.

^Tifa^

CitarYo presumo que tiene un chapuzon de dudas y confusiones, creo que con mi post resuelve su duda...!

Ojala sea asi  :rolleyes:  porque particularmente yo... he entendido muy poco sus respuestas y lo que anda solicitando.

ssccaann43 ©

Cita de: 50l3r en 24 Marzo 2010, 14:34 PM
tengo un indice en la tabla equipos del campo nombre, para por ejemplo sacar el nombre en la tabla partidios hago un inner join:
Código (sql) [Seleccionar]

SELECT e1.nombre equipo1,e2.nombre equipo2,avg(resultado_equipo1 + resultado_equipo2) as media FROM partidos  p INNER JOIN equipos e1 on p.id_equipo=e1.registro INNER JOIN equipos e2 on p.id_equipo2=e2.registro GROUP BY id_equipo;


ahi saco por ejemplo la media de puntos de cada partido jugado, y uso inner join para coger el nombre del equipo


Nos gustaria que nos informes si resolviste tu duda...! Saludos
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

50l3r

nada aun no, si la resuelvo os lo hago saber

es un curso de php y me esta resultando un poco dificilillo, y luego viene el avanzado  :o


se nota que es del gobierno jeje

^Tifa^

Nope la peticion en si no esta dificil  ;)  el problema es que al menos yo no entiendo del todo tu peticion, pero guiandome de tus ejemplos mostrados al inicio, cree 2 tablas con la informacion que quieres obtener al final;

Código (sql) [Seleccionar]


mysql> select * from partidos;
+----------+-------------------+
| registro | resultado_equipo1 |
+----------+-------------------+
|        1 |                60 |
|        2 |                80 |
|        1 |                40 |
|        2 |                30 |
|        3 |                15 |
+----------+-------------------+
5 rows in set (0.01 sec)

mysql> select * from equipos;
+----------+---------------+
| registro | nombre        |
+----------+---------------+
|        1 | Los rojos     |
|        2 | Los Azules    |
|        1 | Los rojos     |
|        3 | Los Amarillos |
|        2 | Los Azules    |
+----------+---------------+
5 rows in set (0.00 sec)




Citarhallar el numero maximo de partidos ganados por cada equipo añadiendo el nombre del equipo y ordenar el resultado decrecientemente por el nº de partidos ganados


Ahora, tu enunciado dice, que encuentre el total de partidos ganados por equipo, y diga cuales fueron esos equipos y el resultado final los ordene de manera descendente? entonces seria algo tipo:

Código (sql) [Seleccionar]


mysql> select max(resultado_equipo1) as Partidos_Ganados, nombre as Equipo  from  partidos join equipos on equipos.registro = partidos.registro group by partidos.registro order by nombre desc;
+------------------+---------------+
| Partidos_Ganados | Equipo        |
+------------------+---------------+
|               60 | Los rojos     |
|               80 | Los Azules    |
|               15 | Los Amarillos |
+------------------+---------------+
3 rows in set (0.00 sec)


ssccaann43 ©

Tifa bella, el dice: hallar el numero maximo de partidos ganados por cada equipo añadiendo el nombre del equipo y ordenar el resultado decrecientemente por el nº de partidos ganados

Por tal motivo, debe ir la cantidad que ha ganado y ordenarlo...! Así como lo muestro en las imagenes...! Verifica mis Querys en MySQL, porque lo arme en SQL Server, si te funcionan a ti, pues a el debería funcionarle, aunque es lo mismo... No entiendo porque se le complica la cosa, si es tan simple..!
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

50l3r

max() te saca todos los registros o unicamente el maximo?

porcierto, ya me pasaron el ejercicio como bueno, pero aun asi, me intrigaria saber como se hace, siempre sea por saber mas :)

ssccaann43 ©

MAX(CAMPO) Te saca el valor maximo y depende de la condición para que te muestre uno, o varios registros...! Leete un manual, hay muchos en la web...!
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

^Tifa^

Hola ssscaann43.

No digo que tu idea este equivocada, porque puede ser funcional... yo ofreci un ejemplo que podia ayudarlo , mas no una solucion, ya que yo desconozco totalmente los registros existentes en las tablas para tener una idea mas organizada que datos esta el solicitando. Estoy adivinando acorde a la estructura de tablas que el ofrecio, y imagine que el campo resultado_equipo1 era el campo que guarda los juegos ganados por temporada  ;)

Yo coloque como campo de cantidad de partidos ganados resultado_equipo1  hay salen varios valores, segun de partidos ganados por distintas temporadas 40, 50, 60, 10, etc. Entonces esa seria la cantidad de juegos ganados por equipos usando de relacion el campo registro existente en ambas tablas.

Entonces los nombres de los equipos en mi ejemplo son el campo nombre de la tabla Equipos, en mi caso se repiten varias veces los equipos como podras ver, porque han jugado y ganado en diferentes temporadas  ;)

Entonces si lo anterior es valido, para sacar el maximo de partidos ganados por temporada de cada equipo, se haria la consulta SQL que hice, y que te lanza de resultado la cantidad de juegos mayor ganada por equipo, y el nombre del respectivo equipo que la gano:

Citar
+------------------+---------------+
| Partidos_Ganados | Equipo        |
+------------------+---------------+
|               60 | Los rojos     |
|               80 | Los Azules    |
|               15 | Los Amarillos |
+------------------+---------------+


Si te fijas, el equipo "Los Rojos" jugaron 2 temporadas, en una ganaron 40 juegos y en la otra 60 juegos, miralo en la tabla:

Citar
mysql> SELECT * FROM partidos;
+----------+-------------------+
| registro | resultado_equipo1 |
+----------+-------------------+
|        1 |                60 |
|        2 |                80 |
|        1 |                40 |
|        2 |                30 |
|        3 |                15 |
+----------+-------------------+
5 rows IN SET (0.01 sec)

mysql> SELECT * FROM equipos;
+----------+---------------+
| registro | nombre        |
+----------+---------------+
|        1 | Los rojos     |
|        2 | Los Azules    |
|        1 | Los rojos     |
|        3 | Los Amarillos |
|        2 | Los Azules    |
+----------+---------------+
5 rows IN SET (0.00 sec)


El campo que sirve de relacion en mi ejemplo es registro entonces, el Equipo "Los Rojos" jugo 2 temporadas donde la cantidad mayor de juegos ganados es 60  ;)  descartando donde ellos mismos ganaron 40 partidos....

50l3r

La funcion MAX en SQL obtiene precisamente el numero mayor o maximo existente en un campo de la tabla. Utilize GROUP BY para indicar que me sacara el numero mayor de partidos jugados por cada Equipo... y ese fue el resultado final, el que postee anteriormente.

ssccaann43 ©

Mi linda, es que tienes razón en lo que dices. Pero bueno quizas yo malinterprete lo que este chico quiere, pero a decir verdad "ni el sabe que quiere"...

Ya tiene 2 soluciones, la tuya que le muestra la cantidad de juegos mayor ganada por equipo, y el nombre del respectivo equipo que la gano.... Y la mia que le muestra el equipo con más juegos ganados todo ordenado...! Ya el decidira que opcion tomar...!
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

50l3r

haber, si al sentencia es muy facil, que si se lo que quiero mira

hayar el maximo numero de partidos ganados por cada equipo, y que te salga el nombre del equipo, y que esten ordenados, que eso es facil