Salut tout le monde.
J'ai 3 requêtes SQL que je n'arrive pas du tout à construire. J'ai du mal à saisir la logique de certaines sous-requêtes.
Voilà la structure de ma base :
•JOURNEE(nomconf, anneej, datej, lieuj, pdtjournee1, pdfjournee2, pdtcp1, pdtcp2, pdtco1, pdtco2)
Une journée est identifiée de manière unique par un nom (nomconf) et une année (anneej). Elle est caractérisée par une date (jour de début et jour de fin), un lieu et par un ensemble de personnes : deux présidents des journées, deux présidents du comité de programme et deux présidents du comité d'organisation;
•PUBLICATION(idpubli, nomconf, anneej, titrep, urlpubli, typepubli)
Une publication est identifiée de manière unique par un identifiant et a été faite lors d'une journée (nomconf, anneej clé étrangère sur JOURNEE). Elle est caractérisée par un titre, une url pointant sur le texte de la publication et un type.
•AUTEUR(prenomat, emailat, urlat)
Un auteur est identifié de manière unique par son nom-prénom et est caractérisé par un email et une url.
•PUBLIE(prenomat, idpubli, rang)
Une ligne dans cette relation signifie qu'un auteur (prenomat clé étrangère sur AUTEUR) a contribuée à une publication (idpubli clés étrangère sur PUBLICATION) en un rang donné (entier de 1 à n). Une publication peut avoir plusieurs auteurs et un auteur peut avoir plusieurs publications.
Et ceux que je veux obtenir :
1. Quels sont les auteurs (prenomat) qui ont co-écrit toutes les publications faites par 'Alain Casali' faites avant 2007 ?
•Ecrire cette requête en utilisant la fonction COUNT
•Ecrire cette requête en utilisant un double NOT EXISTS
Je pense que ça doit être quelque chose dans ce genre pour le not exist :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT t.prenomat FROM publie t WHERE NOT EXISTS ( SELECT * FROM publie u WHERE NOT EXISTS ( SELECT * FROM publie v WHERE ... ) SELECT prenomat FROM publie
2. Quels sont les auteurs (prenomat) ayant écrit au moins une publication dans chaque journée ?
•Ecrire cette requête en utilisant la fonction COUNT
•Ecrire cette requête en utilisant un double NOT EXISTS
3.Un auteur est considéré comme un co-auteur "favori" d'un autre auteur si celui-ci a participé à au moins deux publications en commun. Pour chaque auteur, donner son son nom-prénom ainsi que le nombre de fois qu'il a été co-auteur "favori".
•Ecrire cette requête en deux fois : la première requête définit une vue contenant l'information sur les acteurs "favoris"; la seconde utilise cette vue pour obtenir la réponse finale.
•Ecrire cette requête en utilisant deux requêtes imbriquées
Si quelqu'un pouvait me faire ces requêtes en expliquant la logique, ça serait super cool.
Partager