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 SQL + JOIN


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut Requête SQL + JOIN
    Bonjour,

    J'ai une 1ère table(jury) avec les attributs suivants : numjury, numen, nom, prenom et une seconde table (copie) où je retrouve les numjury, les numéros de spécialité (de 1 à 4)et les notes des élèves.
    Sachant que 1 Jury peut avoir à corriger 2 séries max.

    Je dois faire une requête (pour avoir un suivi de notes).
    Il me faudrait donc tous les jurys qui ont saisi des notes et qui sont dans ma 1ère table tout comme il me faudrait aussi ceux ki n'ont pas saisie de notes et qui sont dans ma 1ère table. (lorsque des jurys n'ont pas saisis de notes, ils ne paraissent pas dans la table copie)

    Voici ma requête :

    $requete = "SELECT jury1.numjury,jury.numen, jury.nom, jury.prenom
    from jury, jury1
    RIGHT JOIN copie ON copie.numjury = jury1.numjury
    where jury1.numen1=jury.numen
    ORDER BY jury1.numjury";


    Merci de votre réponse, j'espère avoir été assez claire
    A+
    ST

  2. #2
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,
    - Pour vos jointures, choisissez entre la clause where et la clause from
    - Vous n'avez pas besoin de 2 instances de la table jury
    - L'idée de la jointure externe est bonne

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Oui mais je suis obligé car à la base j'ai 2 extractions de jury provenant de 2 applis différentes. (en effet, j'avais besoin de récupérér le mail des personnes et celui-ci ne paraissait pas ds la première extraction).
    Voilà, mais je suis toujours autant paumée

    Merci de votre aide

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Et comment puis je préciser dans ma requête que je ve uniquement les n°de jury qui commence soit par une lettre ou soit par un chiffre ?

  5. #5
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    votre jointure est à l'envers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT jury1.numjury,jury.numen, jury.nom, jury.prenom
    from 
      jury 
        inner join jury1 on jury1.numen1=jury.numen
        left JOIN copie ON copie.numjury = jury1.numjury
    ORDER BY jury1.numjury

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Rebonjour,

    Merci c'est bien ça, mais j'ai voulu rajouter la condition afin de voir uniquement les jurys qui ont noté pour les spécialités 1 et 2 mais il m'affiche tout quand même ! D'autre part il m'affiche des doublons.
    Par exemple pour un N° de jury qui a 2 spécialités il m'affiche 2 enregistrements et je ne voudrais en voir qu'un seul (car à côté de l'enregistrement il y a un lien qui permet de voir en même temps les notes des 2 séries si il y a).

    voici la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT jury1.numjury,jury.numen, jury.nom, jury.prenom
                 FROM jury 
    INNER JOIN jury1 ON jury1.numen1=jury.numen
                LEFT JOIN copie ON copie.numjury = jury1.numjury
                and copie.numserie IN ('1','2')
                 ORDER BY jury1.numjury
    ;

  7. #7
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    La syntaxe correcte serait plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT jury1.numjury,jury.numen, jury.nom, jury.prenom
    FROM jury 
           INNER JOIN jury1 ON jury1.numen1=jury.numen
              LEFT JOIN (select distinct numjury from copie where numserie IN ('1','2')) as cop ON cop.numjury = jury1.numjury
    ORDER BY jury1.numjury
    ;

Discussions similaires

  1. Requête SQL JOIN
    Par patricx dans le forum Langage SQL
    Réponses: 9
    Dernier message: 25/02/2013, 15h35
  2. Besoin de retrouner des 0 aussi dans une requête SQL avec JOIN
    Par Jean-Marc68 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 05/11/2007, 14h45
  3. Requête SQL avec "Join"
    Par RKU01 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/03/2007, 12h42
  4. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  5. requête sql avec clause INNER JOIN
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/08/2005, 15h47

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