Ver Mensaje Individual
  #19 (permalink)  
Antiguo 14/03/2005, 19:15
apañero
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Vice esto ya está casi acabado, ahora llega alguna consulta un pelín más complicada.
Resulta que quiero ordenar todos los Grupos por su media de nota de sus Discos. Por tanto se ven afectadas 2 tablas, Grupos y Discos, que son del estilo:

TABLE Grupos (
G_ID INT(7) NOT NULL auto_increment,
...
PRIMARY KEY (G_ID)
);

TABLE Discos (
D_ID INT(7) NOT NULL auto_increment,
G_ID INT(7) DEFAULT '0' NOT NULL,
D_Fecha DATE,
D_Nota DECIMAL( 5, 1 ) DEFAULT '0.0' NOT NULL,
...
PRIMARY KEY (D_ID)
);

Y lo que quiero es que saque los 10 Grupos (G_ID) que más media de nota (D_Nota) tengan de entre todos sus discos (D_ID,G_ID).
Yo vengo sumando la nota de todos sus discos y la divido entre el número de discos y saco luego el entero equivalente, pero seguro que se puede hacer más fácilmente sólo con una consulta en vez de estar con php y arrays y bastante código.

Ejemplo práctico:

Grupo G_ID=1 con 2 discos: D_ID=1 y D_ID=2 de nota 7.5 y 6 respect.
Grupo G_ID=2 con 3 discos: D_ID=1, D_ID=2 y D_ID=3 de nota 6 y 7 y 8 respect.
Grupo G_ID=3 con 1 discos: D_ID=1 de nota 7.5
Grupo G_ID=4 con 1 discos: D_ID=1 de nota 5
Grupo G_ID=5 con 1 discos: D_ID=1 de nota 8

Por tanto:
El Grupo 1 tendría de media: 6.75
El Grupo 2 tendría de media: 7
El Grupo 3 tendría de media: 7.5
El Grupo 4 tendría de media: 5
El Grupo 5 tendría de media: 8

Luego la consulta debería dar: G5,G3,G2,G1 y G4 (ordenados por su media de todos sus discos)
Podría introducir algún parámetro o regla más, pero de momento vamos a lo básico y luego ya seguiremos :P

venga graciasss.