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

Informix Discussion :

Fonction Group By


Sujet :

Informix

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Fonction Group By
    Voila j'utilise une requete sql de ce type :

    SELECT DISTINCT SUBSTR(client.nom,1,1), client.age, adresse.ville, SUM(CLIENT.MNT)
    FROM CLIENT, ADRESSE
    WHERE CLIENT.CODE=ADRESSE.CODE
    AND CLIENT.AGE < '40'
    AND ADRESSE.DEP = '33'
    GROUP BY SUBSTR(client.nom,1,1), client.age, adresse.ville, SUM(CLIENT.MNT)

    Mais j'ai un message d'erreur à mon avis suite à la fonction SUBSTR dans le group by

    qqn peut-il m'aider ?
    Merci

  2. #2
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    pour afficher les requêtes utilise les balises [ Code ] .
    Sinon je pense que ceci devrait aller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT SUBSTR(client.nom,1,1), client.age, adresse.ville, SUM(CLIENT.MNT) 
    FROM CLIENT, ADRESSE 
    WHERE CLIENT.CODE=ADRESSE.CODE 
    AND CLIENT.AGE < '40' 
    AND ADRESSE.DEP = '33' 
    GROUP BY SUBSTR(client.nom,1,1), client.age, adresse.ville
    Si cela ne va pas il me faut plus d'info sur le message d'erreur

  3. #3
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Arf je dirais plutôt ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT SUBSTR(client.nom,1,1), client.age, adresse.ville, SUM(CLIENT.MNT)
    FROM CLIENT, ADRESSE
    WHERE CLIENT.CODE=ADRESSE.CODE
    AND CLIENT.AGE < '40'
    AND ADRESSE.DEP = '33'
    GROUP BY client.nom, client.age, adresse.ville,CLIENT.MNT

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ou plutôt (comme TheRussian):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SUBSTR(client.nom,1,1), client.age, adresse.ville, SUM(CLIENT.MNT) 
    FROM CLIENT, ADRESSE 
    WHERE CLIENT.CODE=ADRESSE.CODE 
    AND CLIENT.AGE < '40' 
    AND ADRESSE.DEP = '33' 
    GROUP BY SUBSTR(client.nom,1,1), client.age, adresse.ville
    J'ai gardé la même jointure, mais si possible, il vaudrait mieux un INNER JOIN.

    Private joke : C'est juste pour revoir l'avatar de BiMouXeTTe (ceci dit je ne plaisantais, il est superbe ton avatar, qui est-ce ?)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Désolé d'interrompre cet instant

    Mais je maintiens ma requête pour 2 raisons :

    - Avec un GROUP BY, un distinct ne sert pas à grand chose
    - Si le but est de faire la somme de CLIENT.MNT, il ne faut pas mettre cette zone dans le group by car il y aura une ligne par MNT, et non la somme.
    Je vous laisse

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Dans certains SGBD, il faut mettre toutes les colonnes dans le GROUP BY.

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par TheRussian
    Mais je maintiens ma requête pour 2 raisons :
    Je suis bien d'accord, et c'est pour cela que je l'ai confirmée
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si tu enlèves le substr dans le GROUP BY, tu vas avoir une ligne par "nom de client", alors que Infomax7 semble vouloir une ligne par initiale du nom de client.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Citation Envoyé par BiMouXeTTe
    Ceci dit, j'enleverai le Substr(), non ?
    Celui du group by ? Non.

    Si tu fais un groupement par nom complet, tu n'auras pas le même résultat que si tu fais un groupement par initiale.

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut La raison of TheRusian
    Salut à tous !
    Désolé pour le retard mais j'ai absolument besoin du SUBSTR().

    TheRussian à raison à propos du DISTINCT.
    Je n'en ai pas vraiment besoin...

  11. #11
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    C'est une base Informix

  12. #12
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Non je ne pense pas mais dans SQL Server, si tu ne met pas tous les champs dans GROUP BY, ca ne fonctionne pas...

  13. #13
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par BiMouXeTTe
    Non je ne pense pas mais dans SQL Server, si tu ne met pas tous les champs dans GROUP BY, ca ne fonctionne pas...
    J'utilise SQL Server tous les jours et je n'ai pas besoin de faire cela.

  14. #14
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Et pourtant c'est bien le seul SGBD qui me demandait de mettre tous les champs dans le GROUP BY. Peut être n'est cepas nécessaire sur les versions plus récentes.

  15. #15
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Citation Envoyé par BiMouXeTTe
    Et pourtant c'est bien le seul SGBD qui me demandait de mettre tous les champs dans le GROUP BY. Peut être n'est cepas nécessaire sur les versions plus récentes.
    C'est quoi la différence entre ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT SUBSTR(client.nom,1,1), client.age, adresse.ville, SUM(CLIENT.MNT)
    FROM CLIENT, ADRESSE
    WHERE CLIENT.CODE=ADRESSE.CODE
    AND CLIENT.AGE < '40'
    AND ADRESSE.DEP = '33'
    GROUP BY client.nom, client.age, adresse.ville,CLIENT.MNT
    et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT SUBSTR(client.nom,1,1), client.age, adresse.ville, CLIENT.MNT
    FROM CLIENT, ADRESSE
    WHERE CLIENT.CODE=ADRESSE.CODE
    AND CLIENT.AGE < '40'
    AND ADRESSE.DEP = '33'
    GROUP BY client.nom, client.age, adresse.ville,CLIENT.MNT
    ?

  16. #16
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    La premiere requete est la fonctionnalité reelle du group by, c'est a dire associé a une fonction d'aggregation (sum). Elle va faire la somme de tous tes clients.mnt en fonction de leur SUBSTR(client.nom,1,1), client.age, adresse.ville, un truc du genre

    A 30 MaVille 40
    A 30 MaVille2 165
    ...

    La seconde requete te ramenera l'equivalent d'un select distinct.
    A 30 MaVille 12
    A 30 MaVille 28
    A 30 MaVille2 143
    ...
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  17. #17
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Je voulais que ça soit BiMouXeTTe qui réponde :p rooh làlà

  18. #18
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    oups ! pardon
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  19. #19
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Lol ca tombe bien j'avais la flème

    Puis j'ai remarqué qu'en ce moment, niveau SGBD, j'dis pas mal de conneries...

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Fonction Group By
    Bonjour,
    sous unix ou linux ,

    SELECT client.nom[1,1], client.age, adresse.ville, SUM(CLIENT.MNT)
    FROM CLIENT, ADRESSE
    WHERE CLIENT.CODE=ADRESSE.CODE
    AND CLIENT.AGE < '40'
    AND ADRESSE.DEP = '33'
    GROUP BY 1,2,3

Discussions similaires

  1. fonction Group by dans le chargement.
    Par arnest dans le forum QlikView
    Réponses: 2
    Dernier message: 24/05/2011, 17h47
  2. fonction group by
    Par kaayna dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/04/2010, 11h03
  3. Fonction Group absente
    Par DeNantes dans le forum iReport
    Réponses: 6
    Dernier message: 25/02/2009, 21h30
  4. fonction group by
    Par aurelie83 dans le forum SQL
    Réponses: 2
    Dernier message: 01/10/2007, 14h18
  5. Saut de page et fonction Group BY
    Par ramoucho17 dans le forum iReport
    Réponses: 1
    Dernier message: 11/10/2006, 10h36

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