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 avec 1 goup by et 1 substr


Sujet :

SQL Oracle

  1. #1
    Membre du Club Avatar de pascal_T
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut problème avec 1 goup by et 1 substr
    Bonjour à tous, j'ai 1 sélection à faire et je vois pas pourquoi la requête que j'ai mise en place génère le message suivant "n'est pas une expression group by".

    voici la requête :

    select substr(rub.cod_rub,1,3)||'C_A' RUB,
    (select rub.lib_rub from rubriq r1 where r1.cod_rub = substr(rub.cod_rub,1,3)||'C') LIB_RUB ,
    count (*)
    from rubriq rub
    where rub.cod_rub like '8%C' or rub.cod_rub like '8%A'
    group by substr(rub.cod_rub,1,3),lib_rub;

    ==> la table contiend des lignes avec cod_rub du type 805A et 805C ainsi qu'un libellé LIB_RUB. je ne souhaite afficher que le libellé de la version en C.

    Si quelqu'un a 1 idée.
    SGDR: Oracle 9.2
    OS: Solaris 10

  2. #2
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par pascal_T Voir le message
    Bonjour à tous, j'ai 1 sélection à faire et je vois pas pourquoi la requête que j'ai mise en place génère le message suivant "n'est pas une expression group by".

    voici la requête :

    select substr(rub.cod_rub,1,3)||'C_A' RUB,
    (select rub.lib_rub from rubriq r1 where r1.cod_rub = substr(rub.cod_rub,1,3)||'C') LIB_RUB ,
    count (*)
    from rubriq rub
    where rub.cod_rub like '8%C' or rub.cod_rub like '8%A'
    group by substr(rub.cod_rub,1,3),lib_rub;

    ==> la table contiend des lignes avec cod_rub du type 805A et 805C ainsi qu'un libellé LIB_RUB. je ne souhaite afficher que le libellé de la version en C.

    Si quelqu'un a 1 idée.
    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select substr(rub.cod_rub,1,3)||'C_A' RUB,
    (select rub.lib_rub from rubriq r1 where r1.cod_rub = substr(rub.cod_rub,1,3)||'C') LIB_RUB ,
    count (*)
    from rubriq rub
    where rub.cod_rub like '8%C' or rub.cod_rub like '8%A'
    group by select substr(rub.cod_rub,1,3)||'C_A' RUB,
    (select rub.lib_rub from rubriq r1 where r1.cod_rub = substr(rub.cod_rub,1,3)||'C')
    Ton 2ieme champ n(LIB_RUB)'est pas pas présent dans le groupe by alors qu'il devrait.
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  3. #3
    Membre du Club Avatar de pascal_T
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Merci de ton aide mais malheureusement il me met qu'il y a une expression abscente au niveau du premier select du group by. et si je ne mets que
    "substr(rub.cod_rub,1,3)||'C_A" alors il me met: "expression de sous-interrogation non autorisée ici" au niveau de
    "SELECT rub.lib_rub FROM rubriq r1 WHERE r1.cod_rub = substr(rub.cod_rub,1,3)||'C')"
    SGDR: Oracle 9.2
    OS: Solaris 10

  4. #4
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par pascal_T Voir le message
    Merci de ton aide mais malheureusement il me met qu'il y a une expression abscente au niveau du premier select du group by.
    => c'est bien ce que je te dis , il manque ton deuxieme champ

    et si je ne mets que
    "substr(rub.cod_rub,1,3)||'C_A" alors il me met: "expression de sous-interrogation non autorisée ici" au niveau de
    "SELECT rub.lib_rub FROM rubriq r1 WHERE r1.cod_rub = substr(rub.cod_rub,1,3)||'C')"

    En même temps je trouve étrange que tu fasse un select dans la clause select ..
    ce n'est pas ca ce que tu veux faire des fois ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    substr(rub.cod_rub,1,3)||'C_A' as RUB,
     rub.lib_rub as LIB_RUB ,
    count (*)
    from rubriq rub, rubriq r1
    where 
    (rub.cod_rub like '8%C' or rub.cod_rub like '8%A') and 
    r1.cod_rub = substr(rub.cod_rub,1,3)||'C')
    group by substr(rub.cod_rub,1,3),rub.lib_rub
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  5. #5
    Membre du Club Avatar de pascal_T
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Non, car le champ lib_rub varie en fonction de la version de cod_rub, et je souhaite n'afficher que le lib_rub associé au cod_rub du type '8%C'.

    C'est ce champ qui me met le bazard.
    SGDR: Oracle 9.2
    OS: Solaris 10

  6. #6
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par pascal_T Voir le message
    Non, car le champ lib_rub varie en fonction de la version de cod_rub, et je souhaite n'afficher que le lib_rub associé au cod_rub du type '8%C'.

    C'est ce champ qui me met le bazard.
    Ma requete correspond a ce que tu decris je crois ...
    tu peux nous donner un exemple de données et les résultats que tu voudrais avoir ?
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  7. #7
    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
    Je ne suis pas certain mais probablement que tu veut faire ça
    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
    16
    17
     
    Select Rub, Lib_Rub, Count(*)
      From (
            Select substr(rub.cod_rub,1,3)||'C_A' RUB,
                   (Select r1.lib_rub 
                      From rubriq r1 
                     Where r1.cod_rub = rub.cod_rub 
                       And r1.cod_rub Like '%C') Lib_Rub
             From rubriq rub
            Where rub.cod_rub like '8%C' or rub.cod_rub like '8%A'
    )
    Group By rub, lib_rub
     
    RUB    LIB_RUB    COUNT(*)
    ------ -------- ----------
    805C_A                   1
    805C_A Lib 805C          1

  8. #8
    Membre du Club Avatar de pascal_T
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Merci avec un peu de retard, je me suis finalement débrouillé en passant par 1 table intermédiare, en attendant de pouvoir mettre au point une solution un peu plus propre.
    SGDR: Oracle 9.2
    OS: Solaris 10

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

Discussions similaires

  1. problème avec substr
    Par bills dans le forum SL & STL
    Réponses: 4
    Dernier message: 01/02/2008, 09h49
  2. [XSLT]problème avec substring et when
    Par fabnet dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/10/2007, 07h28
  3. problème avec substring
    Par trotters213 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/10/2006, 15h39
  4. problème avec substring
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/10/2005, 13h47
  5. Problème avec un substring
    Par yoda_style dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 11h29

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