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 :

requête sur info de la base


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 73
    Points : 60
    Points
    60
    Par défaut requête sur info de la base
    Est t-il possible de récupérer par requête le nombre de ligne qu'il y a dans un package ou procédure ou fonction?

    De plus j'ai créé une requete qui me permet pour chaques table et vu le nombre de clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    (select table_name, count(*) "cle" 
    from user_constraints   
    group by table_name  
    union select distinct(all_tab_columns.table_name),0 
    from all_tab_columns,user_constraints t1 
    where all_tab_columns.table_name not in t1.table_name  and all_tab_columns.owner='XXX' ) 
    order by table_name

    par contre là j'ai des doublons.....
    union entre les deux requetes car toutes les tables n'apparaissaient pas!!
    en effet s'il n'y a pas de clé j'aimerai retrourner 0 ok pas de souci.par contre s'il y a une clé j'ai deux résultats:
    une ligne avec le bon nombre de clé sur la table et une autre ligne avec un 0.


    Merci

  2. #2
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    j'ai modifié ma requête mais il manque un petit truc encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select table_name, count(*) "index" from USER_INDEXES where table_name not in (select view_name from user_views )  group by table_name 
    union 
    select distinct(table_name),0
    from all_tab_columns
    where owner='TMADSI' and table_name not in (select view_name from user_views) and table_name not in (select table_name  from USER_INDEXES)  group by table_name
      union 
    (select table_name, count(*) "clé" from user_constraints where table_name not in (select view_name from user_views)  group by table_name )
    order by table_name
    En effet le résultat obtenu est:
    NOM TABLE1 nombre d'index
    NOM TABLE1 nombre de clé
    NOM TABLE2 nombre d'index
    NOM TABLE2 nombre de clé
    .
    .
    .
    .


    qui a une idée?

  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
    pourquoi chercher dans user_views et user_tab_columns?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     select table_name, count(*) c, 'index' x from USER_INDEXES group by table_name
     union all
     select table_name, count(*), 'clé étrangère' from USER_constraints where constraint_type='R' group by table_name
     ;
    DEPT   1 index
    EMP    1 index
    EMP    1 clé étrangère

  4. #4
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    Quelque chose comme ça devrait te donner le nb de lignes :
    select owner,name,type,count(*) from dba_source group by owner,name,type;

  5. #5
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    certe c'est un peu plus rapide mais ça ne me ramène pas toutes les tables. en effet certaine n'ont pas de clé ou d'index

    merci.

  6. #6
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par 13thFloor
    Quelque chose comme ça devrait te donner le nb de lignes :
    select owner,name,type,count(*) from dba_source group by owner,name,type;

    merci de cette info ça marche. mais dans le cas où je n'ai pas de droit de dba y a t-il une solution?
    Merci cordialement

  7. #7
    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
    Citation Envoyé par the_youpi
    certe c'est un peu plus rapide mais ça ne me ramène pas toutes les tables. en effet certaine n'ont pas de clé ou d'index

    merci.
    oui, mais tu n'as pas dit que tu voulais toutes les tables !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    select table_name "table", 
      (select count(*) from user_indexes i where t.table_name=i.table_name) "index", 
      (select count(*) from user_constraints c where c.table_name=t.table_name and constraint_type='R') "clé étrangère" 
    from user_tables t;
     
    table         index clé étrangère
    -------- ---------- ----------------
    SALGRADE          0                0
    BONUS             0                0
    EMP               1                1
    DEPT              1                0

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

Discussions similaires

  1. Condition de requête sur un champ en base
    Par amarcil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/10/2009, 00h31
  2. [4D et ASP.NET] Requête sur base 4D
    Par vinz81 dans le forum 4D
    Réponses: 2
    Dernier message: 25/09/2006, 09h16
  3. [requête sur plusieurs bases]
    Par viny dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/02/2006, 14h18
  4. Requête sur base de données ACCESS
    Par JLamotte dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 10h50
  5. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57

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