Aide sur requête jointures

Eléphanteau du PHP | 47 Messages

04 août 2010, 18:42

J'ai une base de données MYSQL qui répertorie mes livres et qui comporte plusieurs tables dont les suivantes :

- 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.

Eléphanteau du PHP | 47 Messages

05 août 2010, 12:25

Bonjour,

Suite à mon post de hier, je vous précise le message d'erreur renvoyé par MySQL : "Array ( [0] => 42000 [1] => 1066 [2] => Not unique table/alias: 'CB' ) 1".
Merci d'avance de votre aide.