Ajouter une jointure à ma requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajouter une jointure à ma requête

par Cyrano » 11 nov. 2008, 23:30

Salut,
tu peux faire ça en une seule requête.

Code : Tout sélectionner

SELECT DISTINCT(c.NOM_ANNEE) FROM cours.c, enseigner e WHERE c.MNEMONIC = e.MNEMONIC AND e.MATRICULE_PROF = 123465
On va décortiquer un peu :
  1. Là, on ne sélectionne qu'une seule occurrence de chaque valeur dans cette colonne

    Code : Tout sélectionner

    SELECT DISTINCT(c.NOM_ANNEE)
  2. On sélectionne les tables sur lesquelles on va faire une jointure, puisqu'on ne veut que les valeurs ayant un lien avec un matricule spécifique.

    Code : Tout sélectionner

    FROM cours.c, enseigner e
  3. Les conditions de la jointure : d'abord, on met en relation les correspondances entre les tables cours et enseigner, puis on filtre sur le matricule du professeur qu'on cible.

    Code : Tout sélectionner

    WHERE c.MNEMONIC = e.MNEMONIC AND e.MATRICULE_PROF = 123465
Pour les jointures, tu aurais pu trouver ce petit tuto de base dans la FAQ

Ajouter une jointure à ma requête

par beegees » 11 nov. 2008, 20:57

Salut tout le monde,

J'ai trois tables dont voici plus d'informations :

Table professeurs :

CREATE TABLE
Champ Type Null Défaut Commentaires
ID bigint(20) Non
MATRICULE_PROF varchar(10) Non
NOM_PROF text Non
PRENOM_PROF text Oui NULL
Email_Prof varchar(50) Non
Table cours :
Champ Type Null Défaut Commentaires
ID bigint(20) Non
MNEMONIC varchar(100) Non
NOM_ANNEE text Non
NOM_COURS text Non
ECTS double Non
PONDERATION int(11) Non
CLOTURE tinyint(4) Oui 0
et enseigner :
ID bigint(20) Non
MATRICULE_PROF varchar(10) Non
MNEMONIC varchar(100) Non
Ce que je voudrais en fait, c'est récupérer le nom des années pour lequel le matricule 123456 donne cours.

Le champ MNEMONIC contient le MNEMOIC (exemple ECO-54) et le matricule du Professeur qui donne ce cours.

Donc première chose à faire, c'est de filtrer les matricule sur 123456.

Code : Tout sélectionner

SELECT * FROM enseigner WHERE MATRICULE_PROF = 123456;
Ensuite, je pense qu'il faut faire une jointure entre la requête ci-dessus et la table cours ?

En plus de cela, il faudrait que le nom des année n'apparaissent qu'une seule fois (DISTINCT).

Je vous remercie sincèrement d'avance pour votre aide très précieuse.

beegees