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 :

Aide sur une requête select


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut Aide sur une requête select
    * Bonjour, *

    PARTICIPANTS(numparticipant, nom, prenom, datenaissance, numrue,
    nomrue, codepostal, ville, pays, langue)
    CONFERENCES(numconference, titre, date, heuredebut, duree, theme,
    reforateur, refanimateur, numsalle#)
    RESERVATIONS(numconference#, numparticipant#)
    SALLES(numsalle, nom, batiment, numero, superficie, capacite, equipement)
    Afficher la liste des personnes (numéro et nom) qui ont réservé une place pour la
    conférence numéro 16, dans l'ordre alphabétique des noms.

    La requête que j'ai fait est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select P.numParticipant, nom
    from PARTICIPANTS P, RESERVATION R
    where P.numparticipant=R.numparticipant
    and numconference=16
    order by nom asc;

    et dans la correction j'ai trouvé comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT P.numparticipant, P.nom 
    FROM PARTICIPANTS P, RESERVATIONS R, CONFERENCES C 
    WHERE P.numparticipant = R.refparticipant 
    AND R.refconférence = C.numconférence 
    AND C.numconférence=16 
    ORDER BY P.nom;
    j'ai pas compris pourquoi dans la correction il y a utilisation de la table CONFERENCE? le champ numconference appartient aussi à la table RESERVATION. Est ce que c'est au choix la mise de la table CONFERENCE ?

    merci pour l'aide

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    N'auriez vous pas fait une erreur en recopiant l'ennoncé, ou la correction ?

    dans la correction, il est indiqué une colonne R.refconférence qui n'existe pas dans le modèle que vous avez indiqué.

    Si les conférences ont un numéro en plus d'un identifiant, alors la jointure est nécessaire, pour filtrer sur le code.

    Si en revanche il n'y a bien qu'un code de conférence qui est la clef primaire, (et reprise donc dans la table RESERVATION), alors la jointure sur la table des conférences me semble en effet superflue.

  3. #3
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    Juste pour dire qu'il est fortement conseillé d'utiliser la norme SQL 2 de 1992 pour écrire vos requêtes SQL. Cela permet de maîtriser ses jointures.

    Il faudrait donc écrire la requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT P.numParticipant, nom
    FROM PARTICIPANTS P INNER JOIN RESERVATION R
     ON P.numparticipant=R.numparticipant
    WHERE numconference=16
    ORDER BY nom ASC;
    Je suis sidérée qu'en 2013 les enseignants ne se soient pas mis à jour.

    Pour ce qui est du problème, votre requête est correcte, la jointure avec la table conférence n'est pas nécessaire puisqu'on vous donne le numéro. Dans la pratique, on n'aura pas un numéro de conférence mais un titre et on sera obligé de passer par la table conférence pour trouver le numéro.

    Cordialement,

    Arkhena

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Bonjour,
    oui j'ai fait une erreur dans la saisie de l'énoncé. En effet la BD est comme suit:

    PARTICIPANTS(numparticipant, nom, prenom, datenaissance, numrue,
    nomrue, codepostal, ville, pays, langue)
    CONFERENCES(numconference, titre, date, heuredebut, duree, theme,
    reforateur, refanimateur, numsalle#)
    RESERVATIONS(refconférence#, refparticipant #)
    SALLES(numsalle, nom, batiment, numero, superficie, capacite, equipement)

    Après cette correction, la mise de la table CONFERENCES reste-il inutile ou bien c'est obligatoire de la mettre dans la requête?

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    dans ce cas, oui, la table CONFERENCES est inutile dans la requête

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Merci pour la réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide sur une requête SELECT
    Par Asdorve dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2010, 11h30
  2. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 11h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 10h26

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