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 :

Extraire des données d'une table si absentes dans une autre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Extraire des données d'une table si absentes dans une autre
    Bonjour à tous,

    Soit une table "livres"

    id | titre
    ---------------
    1 | petit poucet
    2 | chaperon rouge
    3 | Lettres moulin
    4 | Bovary
    5 | Rouge noir

    et une table "livre-lecteurs"

    id-livre | id-lecteur
    -----------------
    1 | 1
    1 | 2
    2 | 3
    3 | 1
    3 | 5
    4 | 2
    4 | 1

    Je voudrais connaitre l'id et le titre des livres qui ne sont pas empruntés, à savoir qu'ils ne sont pas présents dans la colonne id-livre de la table livre-lecteur, mais sachant qu'il y a plusieurs exemplaires de chaque livre...

    Dans cet exemple, le 5 n'est pas emprunté

    J'ai tenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT a.id, a.nom FROM livres a,
    livre-lecteur b WHERE a.id NOT IN(b.id_livre)
    Mais ça sort n'importe quoi sauf ce que j'attends, à savoir :

    5 | Rouge Noir


    Quelqu'un a une idée ?

  2. #2
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bon, j'ai trouvé une soluce....je ne sais pas si c'est la plus optimisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select t1.id, t1.nom from livres t1 where not exists (select null from livre-lecteurs t2 where t1.id = t2.id_livre)
    Qu'en pensez-vous ?
    Le résultat est ok.
    J'ai vu dans les tutos que EXISTS était mieux que NOT IN...

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour Reanud,

    Essaie avec "left join" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      $sql = 'SELECT id, titre
              FROM livres
              LEFT JOIN livre-lecteurs ON id = id-livre
              WHERE id-livre IS NULL';
    ?>
    @+

  4. #4
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Salut Jérôme,

    Oui ta soluce est bien aussi, après je sais pas si
    c'est plus optimisé....mais je te fais confiance !



    Bonne soirée à toi.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/06/2014, 15h25
  2. Recherche d'une valeur présent dans une table mais pas dans une autre
    Par bossLINDROS dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2008, 15h12
  3. Ce qui est dans une table mais pas dans l'autre !
    Par youyoule dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/12/2007, 12h57
  4. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  5. Réponses: 1
    Dernier message: 12/04/2007, 17h08

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