De moeilijkheid zit hem nu in het veld met de auteur(s) van een boek. Het zit namelijk zo: een boek kan één of meerdere auteurs hebben. Indien er meerdere auteurs zijn, wordt er rekening gehouden met de volgorde (de eerstgenoemde auteur is vaak de 'belangrijkste' auteur). Tot slot kan het nog zijn dat er erg veel mensen mee hebben gewerkt die niet allemaal los genoemd worden, dan wordt achter het gewone rijte van (de) auteur(s) de tekst "en anderen" toegevoegd.
Om het wat minder abstract te maken, even een voorbeeldje van een aantal mogelijke opties:
- Eric Cartman
- Eric Cartman, Stan Marsh en Kyle Broflovski
- Eric Cartman en anderen
- Eric Cartman, Stan Marsh en anderen
Voor de opslag van deze data heb ik voor de volgende opbouw gekozen:
book
- id
- author-others*
book_author
- book_id
- author_id
- number**
author
- id
- first-name
- last-name
* Boolean voor de suffix "en anderen".
** Nummer van de auteur bij een bepaald boek, om de volgorde te bepalen. Iemand toevallig een idee voor een betere naam?
Het probleem zit hem nu in het ophalen van de data: hoe kan ik een lijst met boeken én bijbehorende auteurs (in een array) ophalen? Misschien lukt het met trucjes nog wel om de auteurs al door MySQL te formatteren tot de uiteindelijke string, maar dat is absoluut niet de bedoeling. Ik wil dat ik gewoon een array met de auteurs (id, first-name, last-name en number) krijg en die op welke manier dan ook kan verwerken. Een klein voorbeeldje van hoe ik deze data wil hebben vind je hier.
Mijn vraag is nu dus: hoe kan ik dit zo handig mogelijk doen? Ik vrees dat dit niet gaat lukken met één query, dus moet ik nu per boek nog een query uitvoeren om de auteurs op de halen? Of hebben jullie misschien goede ideeën hierover?