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

Requêtes MySQL Discussion :

Donnée d'une table non utilisée dans d'autres


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut Donnée d'une table non utilisée dans d'autres
    Bonjour,
    J'ai une table "format" qui contient les champs id et nom
    L'identifiant de cette table est ensuite potentiellement renseigné dans 3 autres tables :
    • table "livre" qui contient les champs id, formatlivreid, et autres ;

    • table "revue" qui contient les champs id, formatrevueid et autres ;

    • table "catalogue" qui contient les champs id, formatcatalogueid et autres.


    Je voudrais maintenant savoir si tous les identifiants de la table "format" sont utilisés, dans l'une ou l'autre des tables "livre", "revue" ou "catalogue" pour pouvoir éventuellement supprimer les données non utilisées de la table "format".
    Quelqu'un peut-il m'aider ?
    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 283
    Points : 11 742
    Points
    11 742
    Par défaut
    Les formats inutilisés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT F.*
    FROM Formats AS F
      LEFT JOIN (SELECT formatlivreid AS formatid FROM livre
        UNION SELECT formatrevueid FROM revue
        UNION SELECT formatcatalogueid FROM catalogue 
        ) AS U ON F.formatid = U.formatid
    WHERE U.formatid IS NULL
    Je suppose que formatlivreid, formatrevueid et formatcatalogueid sont NOT NULL dans leur table respective. Si ce n'est pas le cas, il faudra adapter la requête...

    De manière plus générale, tu aurais sans doute intérêt soit à revoir ta modélisation pour mettre livres, revues et catalogues dans la même table, soit à créer une vue qui présente les colonnes communes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE VIEW documents 
    AS
    SELECT id, 'L' AS typedoc, formatlivreid AS formatid, titre, ...
    FROM livre
    UNION ALL
    SELECT id, 'R', formatrevueid, titre, ...
    FROM revue
    UNION ALL
    SELECT id, 'C', formatcatalogueid, titre, ...
    FROM catalogue
    La requête "formats inutilisés" pourrait alors être simplifiée ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT F.*
    FROM Formats AS F
      LEFT JOIN Documents D ON F.formatid = D.formatid
    WHERE U.formatid IS NULL
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut
    Ca fonctionne. Merci beaucoup !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/08/2018, 17h02
  2. Réponses: 4
    Dernier message: 09/04/2009, 13h32
  3. [MySQL] Extraire des données d'une table si absentes dans une autre
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/03/2009, 18h39
  4. Réponses: 4
    Dernier message: 27/10/2007, 21h11
  5. Données d'une table deviennent colonne dans autre table?
    Par christophe1245 dans le forum Access
    Réponses: 8
    Dernier message: 19/12/2005, 22h01

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