|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 279 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
C'est tout a fait.... imprécis (pour ne pas dire incompréhensible
Car je pourais te dire : Code :
SELECT Champ1, Sum(Valeur1+Valeur2) FROM TABLE GROUP BY Champ1; 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) |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 279 ![]() |
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 |
|
|
00
|
|
|
#4 | |
|
Membre du Club
![]() |
Citation:
Code :
SELECT 'valeur 1 + 2', sum("2006") FROM latable WHERE champ1 = 'valeur 1' OR champ1='valeur 2' |
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 279 ![]() |
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 |
|
|
00
|
|
|
#6 | |
|
Membre du Club
![]() |
Citation:
|
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Code :
SELECT sum(Surface) FROM TABLE WHERE nomPiece IN ('Cuisine', 'Salon'); 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... |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
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 |
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 279 ![]() |
Je me suis peut être mal exprimé mais moi j'entendais par la un truc du genre:
Code SQL :
SELECT 'regroupement', sum(surface) WHERE piece IN('piece1','piece2') GROUP BY 1; |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
j'avais compris, et ce n'est bien qu'une question de look
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 279 ![]() |
Je parlais pour barbibulle
|
|
|
00
|
|
|
#12 | |
|
Membre du Club
![]() |
Citation:
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. |
|
|
|
00
|
|
|
#13 | |
|
Membre du Club
![]() |
Citation:
|
|
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
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 |
|
|
00
|
|
|
#15 | |
|
Membre du Club
![]() |
Citation:
|
|
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 279 ![]() |
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...
|
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 28 ![]() |
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 ...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com