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 :

Afficher le nom de la table dans un select


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    responsable support
    Inscrit en
    Novembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : responsable support

    Informations forums :
    Inscription : Novembre 2014
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Afficher le nom de la table dans un select
    Bonjour,

    Contexte :
    j'ai une base MySql qui contient plus de 5000 tables (création automatique de table par des process => le nom de chaque tables m'est potentiellement inconnu), et je voudrais repérer les tables avec 0 enregistrement pour les supprimer, les regarder une à une est une méthode, mais je n'ai pas des semaines de non activité pour le faire.
    J'ai donc listé toutes table par un show tables : résultat 5464 lignes, par un éditeur j'ai transformé chaque ligne en "SELECT count(*) as nb FROM <nomTable> UNION" et toutes les 1000 lignes (et la dernière) en "SELECT count(*) as nb FROM <nomTable> ;" (sinon j'ai un dépassement mémoire à cause de trop de tables dans les UNION).

    ça fonctionne bien, sauf que dans le résultat je n'ai que le nombre d'enregistrement et s'est un "bordel" pour retrouver le nom de la table dont le count est à 0.
    De plus je me suis rendu compte que certaines tables contiennent plus d'un million d'enregistrement (ce qui est anormal dans le contexte) et je voudrais les regarder ...

    Question :
    Est possible de créer un requête générique du style "SELECT fonctionNomTable as Nom,Count(*) as Nb FROM <nomTable> UNION", je ne trouve pas cette fonction permettant juste d'afficher en première colonne le nom de la table (mais je me suis peut-être bêtement loupé dans la recherche... c'est peut-être tout "con")
    Je peux le faire dans mon éditeur en recopiant en texte le nom de la table que chaque ligne, mais il y en a plus de 5000 à faire, comme tout informaticien, je suis un peu feignant ...si je peux trouver une solution sans trop taper de données...

    merci d'avance
    Alain

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Bonjour,
    tu peux requêter sur la table des tables (information_schema)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `TABLES` WHERE  `TABLE_ROWS` = 0
    tu peux filtrer sur ton schéma (=ta base) et plein d'autres choses.

    C'est encore + facile sous phpMySQL.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre à l'essai
    Homme Profil pro
    responsable support
    Inscrit en
    Novembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : responsable support

    Informations forums :
    Inscription : Novembre 2014
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Super, je n'avais pas pensé à utiliser le shema système information_schema, la requête suivante répond exactement à ma recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TABLE_NAME,TABLE_ROWS,CREATE_TIME FROM information_schema.TABLES WHERE TABLE_SCHEMA='prod' AND (TABLE_ROWS=0 OR TABLE_ROWS>500000)
    Merci

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

Discussions similaires

  1. [MySQL] Je n'arrive pas à afficher le nom de mes tables dans une liste déroulante
    Par beegees dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/10/2008, 15h16
  2. Afficher le nom de la table dans une colonne
    Par lrochat dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/02/2008, 09h55
  3. Réponses: 5
    Dernier message: 07/09/2006, 12h33
  4. Réponses: 2
    Dernier message: 27/12/2005, 20h09
  5. afficher les champs null de deux tables dans un select
    Par poil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/09/2005, 15h05

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