Hola aovalle:
Suponiendo que en realidad sólo tienes un par de registros para cada "libro" podrías hacerlo con subconsultas, será más o menos así
Código MySQL:
Ver original+---------+---------+------------------------+
| idlibro | idcampo | valor |
+---------+---------+------------------------+
| 1 | 1 | La iliada |
| 1 | 2 | Homero |
| 2 | 1 | Cien años de soledad |
| 2 | 2 | Garcia Marquez, Gabriel|
| 3 | 1 | Constitucion Politica |
+---------+---------+------------------------+
mysql
> SELECT T1.idLibro
, T1.valor
`idcampo (1)`, T2.valor
`idcampo (2)` -> ON T1.idLibro
= T2.idLibro
+---------+----------------------+-------------------------+
| idLibro | idcampo (1) | idcampo (2) |
+---------+----------------------+-------------------------+
| 1 | La iliada | Homero |
| 2 | Cien años de soledad | Garcia Marquez, Gabriel |
| 3 | Constitucion Politica
| Sin autor
| +---------+----------------------+-------------------------+
La idea es hacer un doble JOIN sobre la misma tabla... una sólo para los elementos con idcampo = 1 y otra para los elementos con idcampo = 2...
Te repito que esta solución es válida considerando que sólo se tienen dos elementos por cada "libro" y que cada idLibro tiene los dos registros... cualquier cambio en este supuesto cambiaría la consulta.
Saludos
Leo.