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 :

Récupérer la liste des tables dans l'ordre croissant du nombre de jointure qu'elles contiennent


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut Récupérer la liste des tables dans l'ordre croissant du nombre de jointure qu'elles contiennent
    Bonjour,

    J'aimerais faire une requête qui récupèrerais la liste des tables d'une base de données en fonction du nombre de contrainte de jointure qu'elles contiennent (dans l'ordre croissant).

    Ceci dans le but de pouvoir faire un fichier de sauvegarde de mes tables en les mettant dans le bon ordre, pour qu'il suffise de lancer le script sans que celui-ci produise des erreurs dues à la création des jointures

    Car comme vous le savez je pense, on ne peut joindre une table à une autre que si "l'autre" en question existe déjà.

    J'espère avoir été clair dans mes propos.
    Cordialement.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Je ne suis pas sûr que cette idée puisse fonctionner aussi bien que ça mais il faut interroger la base information_schema pour avoir les métadonnées sur ce que gère le SGBD.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    En effet en y réfléchissant cette manière de faire ne résoudra pas forcément mes problèmes ...

    Car mes relations peuvent se faire depuis une table à une table ayant déjà des relations ...

    Auriez-vous des idées pour régler ce problème ?

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Réfléchissons à l'ordre des opérations...
    1) Créer les tables qui n'ont pas de clé étrangère
    2) Créer les tables qui n'ont que des clés étrangères faisant référence aux tables sans clé étrangère.
    3) Créer petit à petit les tables qui ont des clés étrangères faisant référence à des tables déjà existantes.

    Après je ne sais pas si c'est facile à faire en un seul script SQL mais c'est l'idée.

    Autre solution :
    1) Créer toutes les tables sans les clés étrangères.
    2) Créer les clés étrangères.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Oui ca serait exactement ca,

    Cependant :
    Citation Envoyé par CinePhil Voir le message
    2) Créer les tables qui n'ont que des clés étrangères faisant référence aux tables sans clé étrangère.
    3) Créer petit à petit les tables qui ont des clés étrangères faisant référence à des tables déjà existantes.
    Ceci je ne saurais le faire, et je ne sais pas si c'est vraiment possible.

    Pour votre deuxième idée qui je pense est la meilleure :
    Citation Envoyé par CinePhil Voir le message
    1) Créer toutes les tables sans les clés étrangères.
    2) Créer les clés étrangères.
    Je ne sais malheureusement pas comment récupérer toutes les contraintes de clés étrangères que contient une base de données... Le sauriez-vous ?

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Comme je l'avais suggéré plus haut :
    il faut interroger la base information_schema pour avoir les métadonnées sur ce que gère le SGBD.
    Et dans cette base figure la table KEY_COLUMN_USAGE qui contient les infos sur les clés primaires et étrangères.

  7. #7
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 039
    Points : 23 787
    Points
    23 787
    Par défaut
    Bonjour,

    Un peu de lecture sur le sujet .

    ced

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Réfléchissons à l'ordre des opérations...
    Après je ne sais pas si c'est facile à faire en un seul script SQL mais c'est l'idée.
    Une seule requête suffit, je l'ai donné en exemple sur la récursivité dans cet article :
    http://sqlpro.developpez.com/cours/s...ecursives/#LVI

    A +

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 25
    Points
    25
    Par défaut
    Ton article parle de SQL Server de microsoft, je ne sais pas si les procédures dans ce type de serveur fonctionne également avec MySQL.

    Je vais en tout cas regarder ça, merci beaucoup !

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

Discussions similaires

  1. [VB.2005][SQLSERVER] Récupérer la liste des tables
    Par Kropernic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/05/2008, 17h32
  2. Réponses: 1
    Dernier message: 01/12/2007, 15h18
  3. Obtenir la liste des tables dans Access 2007
    Par je_developpe dans le forum Access
    Réponses: 2
    Dernier message: 13/03/2007, 05h16
  4. comment récupérer le liste des tables et des champs
    Par sekaijin dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 26/07/2006, 16h26
  5. Réponses: 6
    Dernier message: 16/03/2006, 18h32

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