Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/06/2012, 01:54
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Listar registros con atributos en columnas

Tan variables son los atributos de la ficha de un libro para no ponerlos como campos de la tabla libros.... creo que te estas complicando la vida....

Código MySQL:
Ver original
  1. SELECT Sbc.id_libro,Sbc.titulolibro,
  2.              MAX(Sbc.APrecio) Precio,
  3.              MAX(Sbc.AFecha) Fecha,
  4.              ...
  5. (SELECT l.id_libro,l.titulolibro,
  6.              if(a.nombreatributo="Precio",al.valor_atributo,0) APrecio,
  7.              if(a.nombreatributo="Fecha",al.valor_atributo,0) AFecha,
  8.              ...
  9. FROM (libros l INNER JOIN atributoslibros al ON l.id_libro=al.id_libro)
  10.                       INNER JOIN atributos a ON a.id_atributo=al.id_atributo) Sbc
  11. GROUP BY Sbc.id_libro,Sbc.titulolibro;

Esto creo que te lo dará.... no se si usando GROUP_CONCAT se puede hacer (no me gusta).

Si tienes atributos con valor negativo twendrás que cambiar algo...

Pero en cualquier caso si pretendias hacer un sistema en que la lista de atributos fuera dinamica, en el momento que quieres hacer esto deja de serlo ya que la debes conocer ... con programacion externa si se podria construir un TRANSFORM dinamico..... pero el tema es que el diseño para la ficha de un libro no debe ser este....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.