IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête avec not exist


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Requête avec not exist
    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.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Tu devrais complètement revoir ton modèle de données avant d'aller plus loin !

    •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).
    1) Soit il s'agit réellement d'une journée et je ne vois pas pourquoi l'une des colonnes identifiant la journée s'appelle nonconf (nom conférence ?), soit il s'agit d'autre chose (une conférence ?) et autant nommer la table en conséquence.

    2) Tu devrais identifier ta table avec une clé sans signification de type entier et auto-incrémenté.

    Elle est caractérisée par une date (jour de début et jour de fin),
    3) Soit le jour de début et le jour de fin sont égaux, ce qui expliquerait que tu appelle ta colonne "date", qui au passage est mauvais nom pour une colonne de BDD car c'est un mot réservé du langage SQL, soit tu comptes mettre dans cette colonne effectivement deux dates différentes et tu violes la première forme normale !

    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;
    4) Le lieu devrait être externalisé dans une autre table afin d'éviter les répétitions avec des orthographes différentes.

    5) Tu devrais avoir une table des personnes associée à la table des journées/conférences.

    J'arrête là, même genre de remarques pour les autres tables.

    JE t'invite à discuter de ton modèle de données dans le forum Schéma.

Discussions similaires

  1. Comment faire fonctionner une requête avec NOT EXISTS
    Par arnaudperfect dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/11/2007, 10h39
  2. sql requête avec NOT EXISTS
    Par wang_xue dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/10/2007, 19h48
  3. Requête avec NOT EXISTS
    Par lodan dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/07/2007, 10h16
  4. [SQL Server] Probleme avec not exists
    Par maxxou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2006, 16h51
  5. Requète avec NOT EXISTS
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo