Nous devons sélectionner des auteurs qui n'ont pas écrit de livre mais il y a 3 tableaux différents qui me rendent confus sur la façon d'écrire l'expression de jointure.
Nous avons des tables:
authors: author_id authorships: author_id, book_id books: book_id.
Évidemment, j'ai sélectionné les noms des auteurs et essayé la jointure interne, mais cela ne fonctionnera pas pour moi. Une aide serait appréciée!
3 Réponses :
C'est un bon endroit pour utiliser l'anti-modèle LEFT JOIN :
SELECT a.* FROM authors a LEFT JOIN authorships s ON s.author_id = a.author_id WHERE s.author_id IS NULL
Raison d'être: quand le LEFT JOIN apparaît vide, cela signifie que l'auteur n'a aucun enregistrement correspondant dans la table auteurs . La clause WHERE filtre uniquement les enregistrements auteurs sans correspondance (c'est-à-dire les auteurs qui n'ont pas de livres). C'est ce qu'on appelle un antipattern car le but d'un JOIN est généralement de faire correspondre des enregistrements, alors qu'ici nous l'utilisons pour détecter les enregistrements sans correspondance.
Pourquoi antipattern?
Comme cela ressemble à un devoir scolaire, je ne donnerai pas la réponse complète.
Essayez d'utiliser une jointure externe entre les auteurs et la paternité. Assurez-vous de récupérer le livre dont je suis l'auteur.
Essayez de déterminer à quoi ressemble un auteur qui n'a pas publié. Vous pouvez l'utiliser pour formuler la requête pour la réponse que vous recherchez avec une clause where appropriée.
C'est vraiment facile, il suffit de vérifier quelle colonne semble avoir une valeur commune entre ces trois tables si quelque chose est commun au moins dans deux tables, puis mettez une jointure interne sur ces deux et une jointure externe sur la table de données inhabituelle. p >
N'oubliez pas que vos alias auront toujours de l'importance lorsque vous vous joindrez entre différentes tables, les ON et WHERE doivent également être correctement mentionnés.
J'essaye d'analyser l'affirmation: comment un auteur peut-il ne pas avoir écrit un livre? De quelle revendication la personne est-elle un auteur?