Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/03/2014, 10:31
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, 5 meses
Puntos: 2658
Respuesta: Problema con los procedimientos.

No abras nuevos threads para tratar el mismo tema. Continúa a partir de donde lo dejaste, porque el tema aún no está resuelto.
El rpimero problema que tienes es que tienes un muy mal modelo de datos, porque tienes una tabla única para la relacion entre artistas y canciones, cuando esa relación debería ser una tabla relacional distinta. Esto es obligatorio para las relaciones N:M como esa.
El otro problema, la variable en el LIMIT dependerá de la versión de MySQL que haya en el host, por cuanto LIMIT no admite variables en las versiones de MySQL anteriores a la 5.1.x.

Por otro lado, obtener una lista de diez canciones ordenadas en forma aleatoria es tan simple como:
Código MySQL:
Ver original
  1. SELECT C.nombre, idvideo, CONCAT(artista, ', ', artista2, ', ', artista3, ', ', artista4) artistas
  2. FROM canciones C
  3. WHERE FIND_IN_SET(artista, CONCAT(artista, ', ', artista2, ', ', artista3, ', ', artista4)
  4. GROUP BY idvideo
  5. ORDER BY RAND(), C.rank DESC, C.nombre
Por supuesto que esto había que afinarlo, pero la idea más usada para este tipo de coasa es esta.

Repito que el modelo de la tabla que tienes es erróneo, y deberías considerar corregirlo antes de seguir adelante con un esquema profundamente defectuoso..
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 12/03/2014 a las 10:51