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

Oracle Discussion :

group by dans sous-requete


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 60
    Par défaut group by dans sous-requete
    Salut amis développeurs

    Je veux faire çà :

    UPDATE table1 m SET m.col1 =
    (select col1 from table2 e
    where m.col2 = e.col2
    and e.col2 <> ''
    and e.col3 <= (select coltemp from table3 where m.col3 = col_id)
    and rownum<2 order by e.col3 desc)
    where m.col3 = (select col_id from table4)
    Mais comme certains le savent, avec Oracle on ne peut pas utiliser le order by dans une sous-requete.
    Pour les plus curieux voilà ce que ça retourne comme erreur :
    Erreur SQL : ORA-00907: parenthèse de droite absente
    00907. 00000 - "missing right parenthesis"
    J'ai beau tout essayé (fonctions analytiques et autres...) mais rien n'y fait ça marche pas. Donc je viens faire appel à votre dev-solidarité.
    Merci

  2. #2
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    Bonjour,

    Et si tu fais une vue avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create view taVue as select col1 from table2 e
    where m.col2 = e.col2
    and e.col2 <> ''
    and e.col3 <= (select coltemp from table3 where m.col3 = col_id)
    and rownum<2 order by e.col3 desc
    et que tu fais ton update qui s'appuie sur ta vue ça donne quoi ?

    Mais j'avoue que ton update me paraît "bizarre".

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 60
    Par défaut
    Merci macben pour ta réponse rapide.
    et que tu fais ton update qui s'appuie sur ta vue ça donne quoi ?
    ça marche d'une façon ou d'une autre mais c'est à mon avis pas du tout efficace car à chaque ligne à updater il faut parcourir la table à updater...à moins d'utiliser une vue matérialisée....qu'en penses-tu ??
    Sinon est-ce que quelqu'un aura une autre solution à proposer??

  4. #4
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    Tu fais ton update dans un code pl/sql ou c'est juste une commande sql ?

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    En l'état le ORDER BY ne sert à rien puisqu'il est au même niveau que rownum... Il faudrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select col1
      from (SELECT col1 
              FROM table2 e
             WHERE m.col2 = e.col2
               AND e.col2 <> ''
               AND e.col3 <= (SELECT coltemp FROM table3 WHERE m.col3 = col_id)
             ORDER BY e.col3 DESC
            )
     where rownum = 1

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 60
    Par défaut
    Tu fais ton update dans un code pl/sql ou c'est juste une commande sql ?
    C'est juste une commande sql
    En l'état le ORDER BY ne sert à rien puisqu'il est au même niveau que rownum... Il faudrait écrire :
    Oui c'est vrai je rectifie...mais ça ne résoud pas le pb

Discussions similaires

  1. Requete, case, group by et sous requetes
    Par brice.f dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/08/2012, 10h30
  2. Problème de soustraction dans sous requete
    Par Harry dans le forum SQL
    Réponses: 4
    Dernier message: 23/11/2010, 10h03
  3. [SSIS][2k5] Multi Group By dans une requete SQL.
    Par Djaiffe dans le forum SSIS
    Réponses: 9
    Dernier message: 11/02/2009, 09h18
  4. pb de critères dans sous-requetes
    Par marco361020 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/03/2008, 16h27
  5. Mettre une moyenne d'un groupe+individuelle dans 1 requete
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/07/2005, 12h02

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