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 :

Avoir un rapport issu de 3 requêtes SQL


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Avoir un rapport issu de 3 requêtes SQL
    Bonjour,

    Je suis toujours dans mon rapport SQL ; dans SQLPLUS je souhaite avoir ce tableau, issu du résultats de 4 requêtes sur 2 tables (toujours les mêmes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TABLE | MONITORING | NUM_ROWS | LAST_ANALYZED | BYTES/1024/1024  |  INSERTS | UPDATES | DELETES
     xxx    |  YES            | 16875000 |  06-SEP-19          | 26700 Mo             |  6826      |  477       |  12
     yyy   |  YES            | 786874001 |  06-SEP-19          | 99700 Mo            |  416826   |  7777     |  0
    les 4 requêtes sont :
    R1 = select table_name TNN,monitoring from dba_tables where table_name like 'JVTLFZ%' or table_name like 'JKACCAMO%';
    R2= select num_rows,last_analyzed from dba_tables where table_name like 'JVTLFZ%' or table_name like 'JKACCAMO%';
    R3= select bytes/1024/1024 "Mo" from dba_segments where table_name like 'JVTLFZ%' or table_name like 'JKACCAMO%';
    R4= select inserts,updates,deletes from sys.dba_tab_modifications where table_name like 'JVTLFZ%' or table_name like 'JKACCAMO%';

    Donc plutôt que de les lancer et d'avoir 4 tableau, je souhaiterai un tableau regroupant ces 4 requêtes.

    J'ai fait la requêtes suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select T1.table_name, T1.monitoring, T2.bytes/1024/1024 "Mo", T1.num_rows, T1.last_analyzed, T3.inserts, T3.updates, T3.deletes 
    from dba_tables T1, dba_segments T2, sys.dba_tab_modifications T3
    where T1.table_name like 'JVTLF%' or T1.table_name like 'JKACCAMO%'
    and T1.table_name=T2.segment_name
    and T2.segment_name=T3.table_name;
    Mais ça me sort 500 000 fois les mêmes lignes ou presque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      NUM_ROWS LAST_ANAL    INSERTS    UPDATES    DELETES
    ---------- --------- ---------- ---------- ----------
    JVTLFBARGP                                                                                                                       YES      .0625         0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES      .0625         0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES      .0625         0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES       .125          0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES      .3125         0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES      .0625         0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES      .0625         0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES       .125          0 06-SEP-19       1650          0       1240
    JVTLFBARGP                                                                                                                       YES      .0625         0 06-SEP-19       1650          0       1240
    Ca doit pas être complexe mais je sèche ...

    Une idée (ou plusieurs) ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    1. Es-tu certain que tes conditions de jointure sont correctes ?
    2. Quelle est la cardinalité de ces jointures ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    difficile de répondre autrement que par ressenti, mais :
    - il y a très peu de tables correspondant au critère de recherche (moins de 10) de la table T1.
    - pour chacune de ces tables de T1, il n'y a qu'une seule information de type "bytes" à puiser dans T2 et une seule information de "last_analyzed" et "inserts,updates,deletes" à puiser dans T3.

    Le tableau finale devrait donc avoir très peu de lignes.

  4. #4
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Procède par étape pour vérifier la jointure entre les différentes tables.

    Commences par lier T1 et T2 : Est-ce ok ?
    Si non, contrôle la jointure et corrige ce qu'il faut

    Ensuite tu continues avec T1 et T3 puis T2 et T3.

    Une fois les jointures contrôlées et corrigées, rassemble les 3 tables dans une seule requête.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Mettez le filtre OR sur table_name entre parenthèse, et utilisez également le OWNER pour les jointures entre les tables car rien n'empêche d'avoir plusieurs fois le même nom de table entre différents utilisateur.

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Exact, je n'y avais même pas prêté attention !!

    De manière générale, essayez de construire vos requêtes à l'aide d'INNER JOIN, cela permet de distinguer la partie jointure de la partie restriction par clause :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select T1.table_name, T1.monitoring, T2.bytes/1024/1024 "Mo", T1.num_rows, T1.last_analyzed, T3.inserts, T3.updates, T3.deletes 
    from dba_tables T1
      INNER JOIN dba_segments T2
        ON T1.owner = T2.owner
        AND T1.table_name=T2.segment_name
        INNER JOIN sys.dba_tab_modifications T3
          ON T2.owner = T3.table_owner
          AND T2.segment_name=T3.table_name;
    where 
      (T1.table_name like 'JVTLF%' 
      or T1.table_name like 'JKACCAMO%'
      );

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    je comprends mieux le principe des inner join.

    la requête lancée donne un résultat très bizarre :

    5915 résultats et une erreur de syntax sql ????

    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
     
    WRI$_OPTSTAT_HISTHEAD_HISTORY                                                                                                    YES      .1875
        720495 15-JUL-19       2487          0          0
     
    WRI$_OPTSTAT_HISTHEAD_HISTORY                                                                                                    YES      .1875
        720495 15-JUL-19       2571          0          0
     
     
    5915 rows selected.
     
    SQL> SP2-0042: unknown command "where" - rest of line ignored.
    SQL>   2    3    (T1.table_name like 'JVTLFZUO'
       *
    ERROR at line 1:
    ORA-00928: missing SELECT keyword

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Il y a un point-virgule qui traîne là où il ne devrait pas se trouver.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Oups oui vous avez raison Al1_24

    La requête corrigée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select T1.table_name, T1.monitoring, T2.bytes/1024/1024 "Mo", T1.num_rows, T1.last_analyzed, T3.inserts, T3.updates, T3.deletes 
    from dba_tables T1
      INNER JOIN dba_segments T2
        ON T1.owner = T2.owner
        AND T1.table_name=T2.segment_name
        INNER JOIN sys.dba_tab_modifications T3
          ON T2.owner = T3.table_owner
          AND T2.segment_name=T3.table_name
    where 
      (T1.table_name like 'JVTLF%' 
      or T1.table_name like 'JKACCAMO%'
      );

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2017
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Bien vu !! j'aurai pu chercher un peu aussi ...
    la requête fait exactement ce que je cherche !

    merci à tous et surtout à "Scriuiw" quel nom bizarre ^^


  11. #11
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Citation Envoyé par crob37 Voir le message
    [..] "Scriuiw" quel nom bizarre ^^


    Je sais bien mais pas besoin de suffixe numérique avec, il est unique sur chaque site !!

Discussions similaires

  1. [AC-2007] Remplir une textbox issu d'une requête sql
    Par psylo24 dans le forum VBA Access
    Réponses: 0
    Dernier message: 25/05/2013, 15h57
  2. [MySQL] Les données issues d'une requête SQL sont erronées
    Par edenreal dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/08/2009, 00h41
  3. Image issue d'une requête SQL ne s'affichent pas toutes
    Par princesse95 dans le forum Langage
    Réponses: 21
    Dernier message: 13/03/2009, 15h22
  4. [SQL] Choix dans une liste déroulante issue d'une requête SQL
    Par Moustic74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2007, 14h06
  5. Afficher une image issue d'une requête SQL
    Par aygitci dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2007, 09h12

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