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

PHP & Base de données Discussion :

recuperer tous les id n'appartenant pas à une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de Elianora la blanche
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 102
    Points : 59
    Points
    59
    Par défaut recuperer tous les id n'appartenant pas à une table
    Bonjour!

    J'ai une base avec 3 tables, une tables d'etudiants, une table de profs et une table de lien entre elles (qui a pour clés primaires le couple id_etudiant/id_prof)

    Je voudrais récupérer tous les id des etudiants n'étant liés à aucun prof (donc pour lesquels l'id n'apparait jamais dans la table de lien)

    j'ai trouvé comment afficher tous les id des etudiants lies à un prof; comment afficher tous les etudiants (liés ou non)

    je bloque là, si quelqu'un a une idée ou une indication... merci

    si vous ne comprenez pas mon problème, je peux donner les structures des tables si c'est plus parlant

    merci d'avance!

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Si ta version de MySQL est >= 4.1 alors tu peux a priori faire des sous-requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT E.*
    FROM   ETUDIANT AS E
    WHERE   NOT  EXISTS (SELECT *
                         FROM   ETD_PROF AS EP
                         WHERE  EP.ID = E.ID)
    Si ça ne te convient pas indique ta version de MySQL et dans tous les cas tu aurais plus de réponses dans le forum SQL.

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Oulà attention aux sous requetes qui sont gourmandes. un LEFT JOIN sera exactement ce dont tu as besoin !

    Citation Envoyé par la doc mysql
    #

    Si aucune ligne ne correspond dans la table de droite dans la partie ON ou USING du LEFT JOIN, une ligne avec toutes les colonnes mises à NULL est utilisé en remplacement. Vous pouvez utiliser ce fait pour trouver les enregistrements dans une table qui n'ont pas de correspondances dans une autre :

    mysql> SELECT table1.* FROM table1
    -> LEFT JOIN table2 ON table1.id=table2.id
    -> WHERE table2.id IS NULL;

    Cet exemple retourne toutes les lignes trouvées dans table1 avec une valeur de id qui n'est pas présente dans table2 (autrement dit, toutes les lignes de table1 sans correspondances dans la table table2). Cela demande que table2.id soit déclaré NOT NULL, bien sur. See Section 7.2.9, « Comment MySQL optimise les clauses LEFT JOIN et RIGHT JOIN ».
    http://dev.mysql.com/doc/refman/5.0/fr/join.html

  4. #4
    Membre du Club Avatar de Elianora la blanche
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 102
    Points : 59
    Points
    59
    Par défaut
    effectivement le LEFT JOIN est parfait, ça fonctionne exactement comme je voulais!

    merci encore

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

Discussions similaires

  1. WebPart - Tous les chemins ne retournent pas nécessairement une valeur
    Par Spitfire378 dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 25/05/2011, 08h41
  2. [VB6] recuperer tous les numero ds une chaine
    Par mqsi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 08/12/2006, 14h37
  3. Enlever tous les retours à la ligne d'une table
    Par jehhej dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/11/2006, 11h05
  4. [DB2]Obtenir tous les noms des champs d'une table
    Par ptr83 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/11/2006, 09h31
  5. recuperer tous les elements d'une JList
    Par ejaub dans le forum Composants
    Réponses: 2
    Dernier message: 01/02/2006, 23h12

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