Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/03/2012, 18:12
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema ordenando por dos campos.

En el contexto de los datos que muestras de ejemplo, esto alcanzaría para dar el resultado esperado:
Código MySQL:
Ver original
  1.     A.idArticulos,
  2.     A.Nombre,
  3.     A.Descripcion,
  4.     A.Precio
  5.     articulos A
  6.     INNER JOIN familias F ON A.Familias_idFamilias = F.idFamilias
  7.     INNER JOIN familias_has_marcas FTM ON F.idFamilias = FTM.Familias_idFamilias
  8.     INNER JOIN marcas M ON FTM.Marcas_idMarcas = M.idMarcas
  9. ORDER BY A.Nombre, A.Descripcion
En cuanto a lo que está mal, hay varios puntos a considerar:
1) El stored procedure no funcionará, porque LIMIT no admite uso de variables de ningún tipo. Sólo números naturales.
2) Las tablas contienen redundancia de datos. Poner, por ejemplo, un campo "orden", que es un espejo de lo que aparece en otros (familias_id, marcas_familia_id, etc), hace que el campo se vuelva irrelevante.
3) Las PK estan mal construidas, porque permiten inconsistencias al crearlas compuestas de un id incremental, mas otros campos. Así, se podría insertar varias veces el mismo producto con sólo variar el id incremental que es parte de la clave.
4) La tabla de relación N:M, está mal construida, porque su clave debería ser de dos campos y no de tres. Sólo se admitiría un discriminante (no autoincremental), si la misma familia puede corresponder a la misma marca mas de una vez... algo poco probable.
5) La relación entre familia y artículo es redundante, porque ya está establecida por la relación entre familia y marca, o bien la de marca está de más porque familia y marca ya lo están. Una de las dos relaciones con artículo debe ser eliminada.
6) Los ORDER BY por defecto son siempre ASC. Si vas a hacer listados ordenados en forma ascendente, es innecesario ponerlo.
7) El orden de información que estás buscando es en definitiva un orden alfabético, por lo que el campo "orden" resulta innecesario, ya que ese tipo de orden se puede lograr con sólo los de descripción y nombre.

Finalmente: Necesitarías volver a revisar los conceptos de integridad, consistencia y unicidad en el modelo relacional. Allí es donde estás fallando.
Vuelve atrás y analiza tu diagrama en base a los fundamentos del modelo E-R. Podrás ver por dónde no se están cumpliendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)