|
Publicité | ||||||||||||||||||||||
|
|
#1 | ||
|
Membre extrêmement actif
![]() Inscription : juin 2006 Messages : 1 801 ![]() |
Bonsoir,
Lorsque l'on fait un GROUP BY, est-il possible de choisir les valeurs que l'on veut garder dans le SELECT. Exemple : J'ai des recettes de base pour faire des confitures et ensuite j'ai des variantes. Je veux la liste des recettes et dans cette liste une seule recette par fruit sachant que la recette de saison l'emporte sur la recette de base. Ma requete ressemblerait à : Code :
Merci pour votre éclairage
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose. |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 832 ![]() |
je ne comprends ton THEN recette ELSE recette... si dans tous les cas tu veux la même chose ce n'est pas la peine de faire un CASE
|
|
|
00
|
|
|
#3 |
|
Membre extrêmement actif
![]() Inscription : juin 2006 Messages : 1 801 ![]() |
Oui mais alors comment lui dire que je veux dans le group by la recette de la saison si elle existe. La recette de base étant celle par défaut.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose. |
|
|
00
|
|
|
#4 | ||
|
Membre extrêmement actif
![]() Inscription : juin 2006 Messages : 1 801 ![]() |
Il faut peut-être ne pas utiliser le GROUP BY et faire comme ceci
Code :
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose. |
||
|
|
00
|
|
|
#5 |
![]() ![]() |
On peut avoir la structure de la table et un exemple de données ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#6 | ||
|
Membre extrêmement actif
![]() Inscription : juin 2006 Messages : 1 801 ![]() |
Table
Code :
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose. |
||
|
|
00
|
|
|
#7 | |||||
![]() ![]() |
Un petit mot sur la modélisation des données.
Vous devriez avoir une table des fruits et une tables des types de recettes, selon ce modèle : type_recette -0,n----typer----1,1- recette -1,1----contenir----0,n- fruit Ce qui donnerait les tables : type_recette (tr_id, tr_libelle) fruit (f_id, f_nom) recette (r_id, r_id_type_recette, r_id_fruit, r_explication) Revenons à votre besoin : Citation:
On cherche donc quelle est la "plus grande" recette : Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||
|
00
|
|
|
#8 |
|
Membre extrêmement actif
![]() Inscription : juin 2006 Messages : 1 801 ![]() |
Pour la modélisation merci, mais j'ai fait un exemple simple parce que la réalité est plus complexe et tourne autour de 7 tables et que ce n'est pas le sujet du moment.
En dehors du fait que dans mon exemple effectivement "base" est alphabétiquement avant "printemps", la réalité est tout autre, mais j'ai compris le principe qui est celui que j'avais mis plus haut. Donc pas de possibilité avec un GROUP BY. Merci pour cette confirmation.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose. |
|
|
00
|
|
|
#9 |
![]() ![]() |
Si !
Le GROUP BY est utilisé dans la sous-requête qui va déterminer quelle est la recette à extraire. Je me doutais que ça pouvait être plus complexe. Notamment, si l'ordre alphabétique ne suffit pas, il faut commencer par donner une valeur ordinale aux différents types de recettes. Dès lors, il suffit d'extraire, comme dans ma requête, le MAX (ou le MIN) de cette colonne artificielle d'ordonnancement des données.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com