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 :

Problème Requete Imbriquée


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 201
    Points : 179
    Points
    179
    Par défaut Problème Requete Imbriquée
    Bonjour,

    J'ai un problème avec des requetes imbriquées. Je n'arrive pas à récupérer un champs dans une sous requete.

    La requete est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT distinct utables.column_name, '|', utables.table_name, '|', (select count(*) from (select distinct table_name from all_tab_columns t where t.table_name = utables.table_name))
     from all_tab_columns utables where table_name in (select table_name from all_tables where upper(owner) = upper('TEST')) and column_name like '%OID' and data_type like 'NUMBER' and up
    per(owner) = upper('TEST');
    L'erreur est la suivante : ORA-00904: "UTABLES"."TABLE_NAME" : identificateur non valide

    Lorsque j'enlève le select count(*), il n'y a plus de problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT distinct utables.column_name, '|', utables.table_name, '|', (select distinct table_name from all_tab_columns t where t.table_name = utables.table_name)
     from all_tab_columns utables where table_name in (select table_name from all_tables where upper(owner) = upper('TEST')) and column_name like '%OID' and data_type like 'NUMBER' and up
    per(owner) = upper('TEST');
    Si quelqu'un à une idée pour transmettre les données à mes sous requetes, je suis preneur

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    J'ai l'impression que cette requête est équivalente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT DISTINCT utables.column_name, '|', utables.table_name, '|', 
      (SELECT count(DISTINCT table_name ) 
               FROM all_tab_columns t 
                WHERE t.table_name = utables.table_name)
      FROM all_tab_columns utables 
     WHERE table_name IN (SELECT table_name 
                            FROM all_tables 
                           WHERE upper(owner) = upper('TEST')) 
       AND column_name LIKE '%OID' 
       AND data_type LIKE 'NUMBER' 
       AND upper(owner) = upper('TEST');

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2004
    Messages : 201
    Points : 179
    Points
    179
    Par défaut
    Non, ce n'est pas la même requête. Ma requête doit retourner le nombre d'enregistrement dans chacune des tables.

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Fallait commencer par là.
    Ce que tu as fais est faux et n'est pas possible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT table_name 
    FROM all_tab_columns t 
    WHERE t.table_name = utables.table_name
    Renvoit toujours 1 seule ligne (= utables.table_name)

    Donc en admettant que utable.table_name soit visible du niveau 3 (ce qui n'est pas le cas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT COUNT(*) 
    FROM 
    (SELECT DISTINCT table_name FROM all_tab_columns t WHERE t.table_name = utables.table_name)
    )
    Renverra toujours 1
    C'est equivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT COUNT(*) 
    FROM 
    (SELECT 1 FROM DUAL)
    )

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Ah oui, pour le nb de lignes de chaque table, faut passer par de l'execute immediate (Une petite recherche sur le forum : la question à été posée x fois)

    Tu peux aussi utiliser le nb_rows de all_tables, si les stats viennent d'être calculées et que tu veux pas un chiffre sur à 100% au moment du select.

Discussions similaires

  1. Problème requete imbriquée
    Par michou24 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/10/2009, 17h42
  2. problème requete imbriqué sur une seule table
    Par vanhouten dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/01/2009, 17h35
  3. [MySQL] Problème requete imbriquée
    Par SrK dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2007, 16h03
  4. [MySQL] Requetes imbriquées, problème de groupage
    Par cdelamarre dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2006, 22h16
  5. Réponses: 2
    Dernier message: 11/01/2006, 16h49

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