Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/12/2004, 01:48
Avatar de Vice
Vice
 
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Pongamos que hay 5 tipos, y ¿qué pasa si hay 10 tipos?, y ¿que pasa si hay 20 tipos?, ¿vas a hacer un campo por cada tipo nuevo que aparezca, vas a modificar la programación para que los tenga en cuenta, ...?.
Si estás seguro de que vas a tener sólo 5 tipos o un número corto de datos, puedes hacerlo así. Pero si no sabes la cantidad de tipos, si es un número variable, ..., lo mejor es una tabla relacionada que contenga los tipos de cada disco (rel_disco_tipo, define la relación entre discos y tipos de discos), tan simple como que tenga dos columnas: id_disco (la clave única de la tabla discos) y idtipo, donde tipo llevará un valor x que identifica el tipo. Si consideras dar una descripción al tipo, necesitarás otra tabla Tipos (idtipo, nomtipo).
¿Con esta estructura que te propongo como sacas los 10 discos de tipo 1 con más nota?, sencillo:
Código:
select disco, nota 
from discos a join rel_disco_tipo b on b.id_disco=b.id_disco
where b.tipo = 1
order by nota desc
limit 0, 10
Si aún quieres usar la estructura que tú propones, la consulta sería igualmente sencilla:
Código:
select disco, nota from discos
where campo_tipo1=1
order by nota desc
limit 0,10
Espero que te sirva de ayuda.
Un saludo.
__________________
Estoy contagiado de Generación-I

Última edición por Vice; 10/12/2004 a las 01:52