- 1 table LIVRE comportant notamment comme champs : ID_LIVRE et TITRE
- 1 table CONTRIBUTEURS comportant comme champs : ID_CONTRIBUTEUR, NOM_CONTRIBUTEUR et PRENOM_CONTRIBUTEUR
=> cette table CONTRIBUTEURS comporte des auteurs, des traducteurs, des illustrateurs et des préfaceurs
- 1 table ECRIT comportant comme champs : ID_CONTRIBUTEUR et ID_LIVRE
- 1 table TRADUIT comportant comme champs : ID_CONTRIBUTEUR et ID_LIVRE
- 1 table ILLUSTRE comportant comme champs : ID_CONTRIBUTEUR et ID_LIVRE
- 1 table PREFACE comportant comme champs : ID_CONTRIBUTEUR et ID_LIVRE
Grâce à cette requête, j'affiche le titre des livres et le nom du ou des auteurs de ces livres :
SELECT L.TITRE AS titre,
GROUP_CONCAT(DISTINCT CB.NOM_CONTRIBUTEUR SEPARATOR "|") AS contributeurs
FROM LIVRE L
INNER JOIN ECRIT E
ON E.ID_LIVRE = L.ID_LIVRE
INNER JOIN CONTRIBUTEURS CB
ON CB.ID_CONTRIBUTEUR = E.ID_CONTRIBUTEUR
GROUP BY L.id_livre
ORDER BY L.TITRE
LIMIT 0,100');
Mais je bute sur la requête me permettant d'afficher en plus le prénom de l'auteur ou par exemple le nom du ou des traducteurs. Si j'essaye d'afficher en plus le nom des traducteurs avec cette requête :
SELECT L.TITRE AS titre,
GROUP_CONCAT(DISTINCT CB.NOM_CONTRIBUTEUR SEPARATOR "|") AS contributeurs,
GROUP_CONCAT(DISTINCT CB.NOM_CONTRIBUTEUR SEPARATOR "|") AS traducteurs
FROM LIVRE L
INNER JOIN ECRIT E
ON E.ID_LIVRE = L.ID_LIVRE
INNER JOIN CONTRIBUTEURS CB
ON CB.ID_CONTRIBUTEUR = E.ID_CONTRIBUTEUR
INNER JOIN TRADUIT TR
ON TR.ID_LIVRE = L.ID_LIVRE
INNER JOIN CONTRIBUTEURS CB
ON CB.ID_CONTRIBUTEUR = TR.ID_CONTRIBUTEUR
GROUP BY L.id_livre
ORDER BY L.TITRE
LIMIT 0,100');
Cela m'affiche une erreur : "Warning: Invalid argument supplied for foreach() in..."Pouvez-vous m'aider à écrire la requête me permettant d'afficher simultanément :
- le nom et prénom des auteurs des livres concernés
- le nom et prénom des traducteurs des livres concernés
- le nom et prénom des illustrateurs des livres concernés
- le nom et prénom des préfaceurs des livres concernés
Merci d'avance.