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 Firebird Discussion :

Regroupement données différentes


Sujet :

SQL Firebird

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut Regroupement données différentes
    Bonjour, je voudrais faire un genre de regroupement, mais au lieu de regrouper par valeur identique, je souhaiterai regrouper par données différentes.
    soit une table:

    champ1 | 2006
    ============
    valeur1 | 2
    valeur2 | 3

    Je voudrai obtenir quelque chose du genre:

    champ1 | 2006
    ============
    valeur1+2 | 5

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    C'est tout a fait.... imprécis (pour ne pas dire incompréhensible )donc il serait étonnant que tu optiennes une réponse à ton probleme.
    Car je pourais te dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Champ1, Sum(Valeur1+Valeur2) from Table group by Champ1;
    Mais franchement, je ne sais pas ce qu'est Valeur1 et 2 (colonnes différentes ? ou juste valeurs diférentes ?)

    Le plus difficile n'est pas de résoudre le probleme mais de l'expliquer clairement (et la plupart du temps en l'expliquant, il se résoud tout seul)

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    Ce sont justes des valeurs différentes, par exemple la valeur champs1 contient valeur1, et valeur2, avec respectivement les valeurs 2 et 3, je cherche a pouvoir sortir leur somme, un peu comme un regroupement, sauf que je regrouperai avec des valeurs différentes.
    Une solution serait de créer une colonne avant dans la requête avec les mêmes valeurs de façon a pouvoir faire un group by, mais je ne sais pas comment faire, a part user de procédures stockées.

    en fait cela revient a faire des sommes sur des lignes.
    Je ne sais pas si cela est possible...

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par nek_kro_kvlt
    Ce sont justes des valeurs différentes, par exemple la valeur champs1 contient valeur1, et valeur2, avec respectivement les valeurs 2 et 3, je cherche a pouvoir sortir leur somme, un peu comme un regroupement, sauf que je regrouperai avec des valeurs différentes.
    Une solution serait de créer une colonne avant dans la requête avec les mêmes valeurs de façon a pouvoir faire un group by, mais je ne sais pas comment faire, a part user de procédures stockées.

    en fait cela revient a faire des sommes sur des lignes.
    Je ne sais pas si cela est possible...

    Merci
    Tu dois avoir un problème de conception. Sans ce cas précis la solution c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'valeur 1 + 2', sum("2006") from latable where champ1 = 'valeur 1' or champ1='valeur 2'
    Si tu veux d"autres solutions pour concevoir mieux un système qui réponde aux questions que tu lui poses, explique exactement ce dont tu as besoin.

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    imagineons que j'ai une table comme cela:

    |nom pièce|surface|
    ===============
    |Salon | 50 |
    |Cuisine | 30 |
    |salle d'eau| 30 |

    et que je veuilles avoir la surface totale de ma maison, mais aussi par exemple pourvoir regrouper les pièces et les appeler par exemples chambres, ou alors salle de travail, salle de vie quotidienne, et choisir quelles pièces je veux, mais ce choix est fait au niveau de l'utilisateur. Je penses donc que créer une colonne à la volée puis grouper par celle ci est un bon moyen de faire ce que je veux

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par nek_kro_kvlt
    imagineons que j'ai une table comme cela:

    |nom pièce|surface|
    ===============
    |Salon | 50 |
    |Cuisine | 30 |
    |salle d'eau| 30 |

    et que je veuilles avoir la surface totale de ma maison, mais aussi par exemple pourvoir regrouper les pièces et les appeler par exemples chambres, ou alors salle de travail, salle de vie quotidienne, et choisir quelles pièces je veux, mais ce choix est fait au niveau de l'utilisateur. Je penses donc que créer une colonne à la volée puis grouper par celle ci est un bon moyen de faire ce que je veux
    C'est bien ce que je dis, tu as un problème de conception. Ton modèle n'est pas bon, quand on a besoin d'ajouter des colonnes pendant l'exécution du programme c'est que quelque chose a été mal pensé. Il faut ajouter des tables et des relations entre les tables. Pas des colonnes !

  7. #7
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select sum(Surface) from table where nomPiece in ('Cuisine', 'Salon');
    Resultat : 80.


    De créer une colonne ou meme de mettre a jours une colonne existante va poser de gros problemes si ton programme fait des accés simultannés, s'il plante apres la création de la colonne. Etc...

  8. #8
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    j'ajouterai juste en plus que le nom des colonnes est accessoire, cela fait partie du "look" et donc se traite coté client pas coté serveur
    mais bon avec la requete de la réponse précédente, tout va bien
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    Je me suis peut être mal exprimé mais moi j'entendais par la un truc du genre:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'regroupement', sum(surface) where piece in('piece1','piece2') GROUP BY 1;

  10. #10
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    j'avais compris, et ce n'est bien qu'une question de look
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  11. #11
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    Je parlais pour barbibulle

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par nek_kro_kvlt
    Je me suis peut être mal exprimé mais moi j'entendais par la un truc du genre:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select 'regroupement', sum(surface) where piece in('piece1','piece2') GROUP BY 1;
    Il n'empêche que si tu veux stocker dans la base de données le concept de "groupe de pièces' (une zone ???), tu dois créer une table des zones et une table des "pieces_de_la_zone"

    Ensuite tes requêtes iront d'elles même, avec quelques jointures et des group by tu pourras facilement récupérer toutes les surfaces qiue tu veux, dans tous les sens et pour toutes les zones qui amuseront ton utilisateur.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Barbibulle
    De créer une colonne ou meme de mettre a jours une colonne existante va poser de gros problemes si ton programme fait des accés simultannés, s'il plante apres la création de la colonne. Etc...
    Non, c'est exactement à ça que sert un SGBD.

  14. #14
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Je parlais de création de colonne à la vollée comme il avait l'air de vouloir le faire et non en mode conception...

    Si chaque client se crée dans sa transaction une colonne poubelle rien que pour pouvoir mémoriser un choix, c'est tout simplement une faute de conception et d'analyse...

    Sauf cas particuliers (il y en a toujours )...

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 56
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Barbibulle
    Si chaque client se crée dans sa transaction une colonne poubelle rien que pour pouvoir mémoriser un choix, c'est tout simplement une faute de conception et d'analyse...
    Oui, Oui, et OUI :-)

  16. #16
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    Bah dans mon cas précis j'ai besoin de copier ce regroupement dans une autre table, alors ça me permets de copier directement avec un insert into et de spécifier la valeur du champs 'nom' de la table, j'ai pas besoin de jointures en fait...

  17. #17
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Procedure stockées
    Bonjour , tu peux effectuer ce que tu demandes dans une procedure stockée mais attention si la chaine renvoyer ( CUISINE || SALON ..... ) depasse la place prevu a cet effet ...

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/06/2015, 11h23
  2. Regrouper données plusieurs ligne en une seule
    Par willytito dans le forum Access
    Réponses: 2
    Dernier message: 03/09/2007, 10h35
  3. Menu principal pour des bases de données différentes ?
    Par Kareg dans le forum Modélisation
    Réponses: 30
    Dernier message: 20/08/2007, 16h10
  4. tri des données différent entre 2 bases
    Par j6m dans le forum Oracle
    Réponses: 2
    Dernier message: 12/03/2006, 10h17
  5. Modifier une requête par des données différente
    Par leloup84 dans le forum Requêtes
    Réponses: 9
    Dernier message: 06/03/2006, 14h23

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