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

SQL Oracle Discussion :

Comment obtenir la liste des tables et leurs nombres de lignes respectifs


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment obtenir la liste des tables et leurs nombres de lignes respectifs
    Bonjour, j'ai cherché et lu attentivement tout ce qui pouvait se rapporter à mon problème mais je n'ai pas trouvé la solution à cette question toute simple:

    Je voudrais utiliser le contenu d'un champs comme partie d'une instruction SQL :

    exemple :

    si j'ai :

    (SELECT TABLE_NAME from all_tables where table_name like 'T%')


    TABLE_NAME
    -------------
    TITI
    TOTO
    TUTU


    Je voudrais pouvoir faire par exemple :

    select 'TITI', count(*) from TITI;
    select 'TOTO' count(*) from TOTO;
    select 'TUTU' count(*) from TUTU;

    où les valeurs 'TITI',TITI,'TOTO',TOTO,'TUTU',TUTU seraient créées dynamiquement depuis (SELECT TABLE_NAME from all_tables where table_name like 'T%').

    en résumé, je voudrais pourvoir faire un count(*) (ou autre instruction) sur n tables de ma base.

    merci de votre aide.

  2. #2
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <? 
    $result = mysql_query("SELECT TABLE_NAME from all_tables where table_name like 'T%'")or die ("requête impossible" . mysql_error());
     
    while($requete = mysql_fetch_array($result))
    {
    $nom = $requete['TABLE_NAME'];
    select $nom, count(*) from $nom;
    }
    ?>
    Voila en gros à quelque quote près
    Évènements dans le 06?
    www.sortir06.com

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    J'ai déjà essayé ça en xml

    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
     
    select
        table_name,
        to_number(
          extractvalue(
            xmltype(
     dbms_xmlgen.getxml('select count(*) c from '||table_name))
            ,'/ROWSET/ROW/C')) count
    from user_tables;
     
    TABLE_NAME                      COUNT
    ------------------------------ ------
    DEPT                                4
    EMP                                14
    BONUS                               0
    SALGRADE                            5
    mais c'est nettement plus propre en plsql

    style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create or replace function f(table_name varchar2) return number is 
    c number;
    begin 
      execute immediate 'select count(*) from '||table_name into c;return c; 
    end;
    /
     
    select table_name,f(table_name) from user_tables where table_name like 'T%';

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    on se doit de signaler aussi l'existence de la colonne NUM_ROWS de DBA_TABLES qui contient le nombre de lignes comptées ou estimées par DBMS_STATS lors du calcul des tatistiques

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2013, 01h26
  2. Liste des tables avec leur nombre d'enregistrements
    Par emilie1t dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/10/2012, 17h28
  3. comment obtenir la liste des champs d'une table
    Par richard038 dans le forum SQL
    Réponses: 4
    Dernier message: 13/02/2009, 19h28
  4. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 17h54

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