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 :

[Oracle 10g] Problème Union-sous requêtes-group by


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [Oracle 10g] Problème Union-sous requêtes-group by
    Bonjour à tous !

    Je viens vers vous car je n'arrive pas à résoudre un problème en lien avec la requête suivante :

    select SCI_ATTR_TABLE.SCI_ATTR, sum(SCI_ATTR_TABLE.SCI_VALUE) as "SOMVAL", PIE_INDEX
    from counter_snapshot,(
    select counter_schedule.SCI_DATE, counter_schedule.SCI_WEEKDAY, counter_schedule.SCI_WEEK, counter_schedule.SCI_WORK_DAY,
    'Work' as "SCI_ATTR", '2' as "PIE_INDEX", counter_schedule.SCI_WORK_TIME as "SCI_VALUE"
    from counter_schedule
    where counter_schedule.SCI_SNAPSHOT_ID = 2
    union
    select counter_schedule.SCI_DATE, counter_schedule.SCI_WEEKDAY, counter_schedule.SCI_WEEK, counter_schedule.SCI_WORK_DAY,
    'Travel' as "SCI_ATTR", '1' as "PIE_INDEX", counter_schedule.SCI_TRAVEL_TIME as "SCI_VALUE"
    from counter_schedule
    where counter_schedule.SCI_SNAPSHOT_ID = 2
    union
    select counter_schedule.SCI_DATE, counter_schedule.SCI_WEEKDAY, counter_schedule.SCI_WEEK, counter_schedule.SCI_WORK_DAY,
    'Rest' as "SCI_ATTR", '3' as "PIE_INDEX", counter_schedule.SCI_AVAILABLE_TIME as "SCI_VALUE"
    from counter_schedule
    where counter_schedule.SCI_SNAPSHOT_ID = 2
    )
    as "SCI_ATTR_TABLE"
    group by SCI_ATTR_TABLE.SCI_ATTR, PIE_INDEX
    order by PIE_INDEX
    J'obtiens alors l'érreur suivante, c'est probablement une connerie, mais je ne vois plus rien ....

    as "SCI_ATTR_TABLE"

    *

    ERROR at line 18:

    ORA-00933: SQL command not properly ended
    Merci de votre aide !

  2. #2
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Il faut enlever le AS qui ne sert que pour le renommage de colonne (enfin, je crois), l'utilisation d'un alias de table se fait sans le "AS"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT *
    FROM DUAL "MONALIASDETABLE"
    Ensuite, à cause du champ que tu as nommé PIE_INDEX, tu ne peux pas avoir de ligne d'une des sous-requêtes qui soient identiques à des lignes d'une autre des sous-requêtes (car 1<>2<>3), donc il vaut mieux pour les performances, utiliser UNION ALL qui ne fera pas l'action de TRI UNIQUE qui est inutile

    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
     
    -- Ce code
    SELECT 1 FROM DUAL
    UNION 
    SELECT 2 FROM DUAL
    UNION
    SELECT 3 FROM DUAL
    -- donnera le même résultat que :
    SELECT 1 FROM DUAL
    UNION ALL
    SELECT 2 FROM DUAL
    UNION ALL
    SELECT 3 FROM DUAL
    -- car les ensembles sont disjoints
    -- mais le UNION ALL est moins couteux et plus rapide
    On utilise le UNION seulement sur des ensembles qui ne sont pas disjoints et pour lesquels on souhaite avoir une garantie d'unicité

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [Résolu] Problème Union-sous requêtes-group by
    Merci beaucoup, je pouvais toujours me demander ce qui n'allait pas ...j'avais effectivement vu qu'il y avait un union all mais pour le coup du As qui ne doit pas être utillisé pour une Table, là je pouvais toujours chercher !!!



    Merci beaucoup !!!!

Discussions similaires

  1. Oracle 10g - Eviter les sous-requêtes
    Par david71 dans le forum SQL
    Réponses: 4
    Dernier message: 06/12/2010, 10h11
  2. Probléme d'installation d'oracle 10g.r2.64 sous unix RHEL5.64
    Par issamo1515 dans le forum Installation
    Réponses: 2
    Dernier message: 13/05/2008, 13h48
  3. Réponses: 2
    Dernier message: 11/01/2007, 13h29
  4. Problème de sous requête
    Par Draiwn dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/11/2005, 01h43

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