Bonjour,
j'ai un léger problème de jointure que je n'arrive pas à résoudre.
ci-dessous les tables :
biblio_texts
id | title | #id_book (defaut = 0) | #id_review (defaut = 0)
biblio_books
id | title
biblio_reviews
id | title
Un texte peut être lié à un ouvrage, une revue ou à rien.
J'aimerais récupérer tous les textes, revues et ouvrages.
Pour pouvoir récupérer les revues et les ouvrages non liés à des textes je suis parti sur une jointure externe. J'arrive actuellement à afficher soit les revues :
soit les ouvrages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $sql = 'SELECT * FROM biblio_texts RIGHT OUTER JOIN (biblio_reviews) ON (biblio_reviews.id = biblio_texts.id_review)';
Mais je voudrais tout regrouper pour pouvoir afficher un tableau du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $sql = 'SELECT * FROM biblio_texts RIGHT OUTER JOIN (biblio_books) ON (biblio_books.id = biblio_texts.id_book)';
J'abouti donc à cette requête mais qui fait ramer le seveur à gogo et qui semble ne pas fonctionner (j'ai entre 500 et 1000 enregistrements par table) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 TitreTexte | TitreRevue | TitreOuvrage rien | UnTitredeRevue | rien rien | UnTitredeRevue2 | rien rien | rien | UnTitreOuvrage rien | rien | UnTitreOuvrage2 UnTitre | UnTitredeRevue3 | rien UnTitre2 | rien | UnTitreOuvrage127 UnTitre3 | UnTitredeRevue8 | rien UnTitre4 | rien | rien
Je précise que j'ai créé des index sur les clés externes (id_book et id_review) de la table biblio_texts.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $sql = 'SELECT * FROM biblio_texts RIGHT OUTER JOIN (biblio_reviews, biblio_books) ON (biblio_reviews.id = biblio_texts.id_review AND biblio_books.id = biblio_texts.id_book)';
Voilà si quelqu'un a une solution ca m'aiderait bien.
Merci d'avance
(J'ai vu plusieurs posts intitulés "double jointure externe" mais je n'ai pas réussi à adapter les réponses à mon cas...)
Partager