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 :

Récupérer des enregistrements non utilisés


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Récupérer des enregistrements non utilisés
    Bonjour à toutes et à tous,

    j'espère sincèrement que quelqu'un pourra m'iader avec ce tout petit souci qui me bloque...
    Voici ma base test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    CREATE TABLE `t_etablissement` (
      `id_etablissement` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
      `nom` VARCHAR(100) NOT NULL,
      PRIMARY KEY (`id_etablissement`),
      INDEX (`nom`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    INSERT INTO `t_etablissement` (`id_etablissement`, `nom`) VALUES
    (1, "Etablissement 1"),
    (2, "Etablissement 2"),
    (3, "Etablissement 3");
     
    CREATE TABLE `t_personne` (
      `id_personne` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
      `civilite` ENUM("","Mr","Mme","Mlle") NOT NULL,
      `nom` VARCHAR(255) NOT NULL,
      `prenom` VARCHAR(255) NOT NULL,
      PRIMARY KEY  (`id_personne`),
      KEY (`nom`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    INSERT INTO `t_personne` (`id_personne`, `civilite`, `nom`, `prenom`)
    VALUES 
    (1, "Mr", "AAAAA", "aaaaaaaa"), 
    (2, "Mr", "BBBB", "bbbbbbb"),
    (3, "Mme", "CCCCCCC", "ccccccccccc"),
    (4, "Mme", "DDDDDDD", "ddd"),
    (5, "Mr", "EEEEEEE", "");
     
    CREATE TABLE `t_appartenance` (
      `id_personne` SMALLINT(5) UNSIGNED NOT NULL,
      `id_etablissement` SMALLINT(5) UNSIGNED NOT NULL,
      PRIMARY KEY  (`id_personne`, `id_etablissement`),
      FOREIGN KEY (`id_personne`) REFERENCES `t_personne` (`id_personne`) ON DELETE NO ACTION ON UPDATE NO ACTION,
      FOREIGN KEY (`id_etablissement`) REFERENCES `t_etablissement` (`id_etablissement`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    INSERT INTO `t_appartenance` (`id_personne`, `id_etablissement`)
    VALUES 
    (3, 1),
    (3, 2),
    (4, 1),
    (5, 3);
    Des personnes appartient à [0 à n] établissements.

    J'aimerais tout simplement, récupérer toutes les personnes n'ayant pas d'établissement.

    J'ai essayé tout bêtement avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM t_personne P, t_appartenance A
    WHERE A.id_personne <> P.id_personne.
    Mais bien évidemment, cela ne fonctionne pas.
    Merci d'avance et à bientôt !

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    avec une jointure externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM t_personne P LEFT JOIN t_appartenance A
    ON A.id_personne = P.id_personne
    where A.id_personne is null

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    trop facile...

    merci beaucoup Cybher

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

Discussions similaires

  1. Récupérer des lignes non enregistrées dans une table
    Par leddy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/04/2008, 15h09
  2. Réponses: 2
    Dernier message: 04/05/2007, 10h55
  3. Réponses: 2
    Dernier message: 09/11/2006, 07h37
  4. Réponses: 2
    Dernier message: 27/07/2006, 07h46
  5. Récupérer des enregistrements par tranche horaire
    Par olive_le_malin dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/05/2006, 16h53

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