Hola a todos! les cuento que tengo que realizar una consulta para sacar un listado y no se cómo hacerla.
Tengo varias tablas de las cuales necesito que me devuelva estos datos:
id |
autor principal nº1
El tema es que yo puedo tener más de un autor principal que lo saco de una tabla llamada libroautor, donde está formada por el idLibro | idAutor | autoría . Por ejemplo, así:
idLibro | idAutor | autoría
1 58 pcipal
1 205 pcipal
1 3 pcipal
Es decir, son tres autores principales de un mismo libro (todos son igual de importantes,
pero tienen un orden de carga en la base de datos que me debería indicar cuál quiero mostrar primero, en mi ejemplo el de idAutor=58).
En el caso del informe que quiero hacer, sólo necesito poner un autor principal, es decir, el que primero cargué. Mi problema es que, cuando hago la consulta, me muestra el idAutor principal con menor id, es decir, en mi ejemplo el de idAutor=3, pero yo quiero que me muestre el 58. No se como hacerlo!! Mi tabla libroautor no tiene un campo que indique el orden de autor de una misma autoría, ni nada más de lo que les mostré arriba. Pensé que me iba a devolver en la consulta el primero cargado, pero no lo hace.
La consulta que hago es:
Código:
SELECT libro.id, autor.id FROM libroautor INNER JOIN libro ON libro.id=libroautor.idLibro INNER JOIN autor ON libroautor.idAutor = autor.id group by libro.id order by libro.titulo
Si le saco el group by libro.id, me muestra todas las filas de los distintos autores de un mismo libro,
respetando el orden de carga en la tabla. Pero no se cómo hacer para tomar
sólo la primer fila de cada libro. o sino cómo hacer que,
por cada libro, me aparezca los autores principales en columnas, no filas .
No se si me habré expresado bien, espero que si!
Les agradezco desde ya me ayuden ya que esto es muy importante para mi porque no logro salir de este problema.