J'utilise MySQL. J'ai 3 tables que j'essaye de se relier dans une question et je ne peux pas voir ce que je fais mal avec la requête suivante:Quel est le problème avec ma requête sql en utilisant les jointures à gauche?
Tableau 1: livres (liste d'informations de livre) Tableau 2: étagère (Je veux générer une liste de tous les livres qu'un utilisateur a dans sa bibliothèque, ainsi que toutes les critiques qu'ils ont faites. La requête suivante me donne une liste seulement des livres que l'utilisateur a examinés; Je veux tous leurs livres. Je pensais que le second LEFT OUTER JOIN le ferait - reliant les titres des étagères aux titres des critiques de livres, mais je n'obtiens aucun livre sans avis (il devrait y en avoir beaucoup). La suppression de la deuxième instruction JOIN (et la mise en place de la bibliothèque dans l'instruction FROM) me permet d'obtenir une liste de titres sans avis, mais elle affiche toutes les critiques de livres de tous les utilisateurs.
SELECT books.title, book_reviews.comments
FROM books
LEFT OUTER JOIN book_reviews ON books.ID = book_reviews.book_id
LEFT OUTER JOIN bookshelf ON book_reviews.user_id = bookshelf.user_id
WHERE bookshelf.book_id = books.ID
AND bookshelf.user_id =1
j'imagine que je manque quelque chose de très évident, mais j'ai lu sur les jointures et d'aller sur ma logique et je suis aveugle à elle. Merci à tous ceux qui peuvent aider à voir ...
Peuvent-ils examiner les livres qui ne sont pas sur leur étagère? –
Oui, ils peuvent, mais pour cette situation, je cherche seulement des articles de leur bibliothèque. Le site est centré sur les livres. – mandel