Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/11/2011, 09:23
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: sacar dos canciones de cada artista..

Cita:
Iniciado por Isidro Ver Mensaje
sigo sin saber cómo hacerlo la verdad... en una sola query se podría hacer?
Hola de nuevo:

¿Leiste la liga que te puse?... intentaste por lo menos hacer lo que ahí se expone??? te pedí que si tenías problemas para formular la consulta postearas lo que intentaste hacer, pero no lo hiciste... tal pareciera que estás esperando que lo hagamos por tí... Mucho ojo con eso.

Checa este script:


Código MySQL:
Ver original
  1. mysql> select * from cancion;
  2. +-----------+--------+-----------+
  3. | idCancion | titulo | idArtista |
  4. +-----------+--------+-----------+
  5. |         1 | uno    |         1 |
  6. |         2 | dos    |         1 |
  7. |         3 | tres   |         1 |
  8. |         4 | cuatro |         1 |
  9. |         5 | cinco  |         2 |
  10. |         6 | seis   |         2 |
  11. |         7 | siete  |         3 |
  12. |         8 | ocho   |         3 |
  13. |         9 | nueve  |         3 |
  14. +-----------+--------+-----------+
  15. 9 rows in set (0.11 sec)
  16.  
  17. mysql> SELECT T1.idArtista, T1.titulo,
  18.     -> FIND_IN_SET(T1.titulo ,
  19.     -> ( SELECT GROUP_CONCAT(titulo ORDER BY idCancion)
  20.     -> FROM cancion T2 WHERE T2.idArtista = T1.idArtista)
  21.     -> ) AS indice FROM cancion T1;
  22. +-----------+--------+--------+
  23. | idArtista | titulo | indice |
  24. +-----------+--------+--------+
  25. |         1 | uno    |      1 |
  26. |         1 | dos    |      2 |
  27. |         1 | tres   |      3 |
  28. |         1 | cuatro |      4 |
  29. |         2 | cinco  |      1 |
  30. |         2 | seis   |      2 |
  31. |         3 | siete  |      1 |
  32. |         3 | ocho   |      2 |
  33. |         3 | nueve  |      3 |
  34. +-----------+--------+--------+
  35. 9 rows in set (0.00 sec)

observa, el artista 1 tiene 4 canciones el artista 2 sólo tiene 2, y el artista 3 tiene 3. se creo una nueva columna indice la cual te enumera las canciones... LO UNICO QUE TIENES QUE HACER ES FILTRAR ESTA CONSULTA, para traer solo aquellos registros con indice 1 y 2... ¿Es muy difícil pedir que lo intentes? como indice es una columna calculada NO SE PUEDE UTILIZAR EN EL WHERE, pero puedes meter todo como una subconsulta.

Código:
Select * from (aqui pones la consulta) T
where (aqui pones la condición para filtrar)
para traer el nombre del artista, no su id simplemente haces un INNER JOIN con la tabla artistas.

INTÉNTALO por favor...

Saludos
Leo.