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 originalSELECT Sbc.id_libro
,Sbc.titulolibro
, ...
(SELECT l.id_libro
,l.titulolibro
, if(a.nombreatributo
="Precio",al.valor_atributo
,0) APrecio
, if(a.nombreatributo
="Fecha",al.valor_atributo
,0) AFecha
, ...
INNER JOIN atributos a
ON a.id_atributo
=al.id_atributo
) Sbc
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....