|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Bonsoir,
J'ai une requête qui me permet de récupérer des informations (statuts de protections) sur des espèces. Code :
tao_id_taxon | statut_uicn_fc | statut_uicn_fr | statut_uicn_monde 87479 "LC" "" "" 87479 "" "LC" "" 87479 "" "" "LC" 87479;"Lc";"LC";"LC" Par avance, merci de votre aide. En PJ, le MCD et le MPD |
||
|
|
00
|
|
|
#2 | |||
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 861 ![]() |
Déjuà est-ce que ta requête ça ne serait pas plutot simplement ça ?
Citation:
Code :
|
|||
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Guillaume Développeur Web Inscription : décembre 2010 Messages : 108 ![]() |
Le résultat n'est pas mieux en ajoutant un GROUP BY a.tao_id_taxon à la fin de la requête SQL ?
|
|
00
|
|
|
#4 | |||
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Citation:
L'idée était d'avoir l'ensemble des statuts de protection pour une espèce sous forme de tableau dès la requête afin de pouvoir exporter le résultat sous format tableur à partir du requêteur...d'où cette requête un peu tarabiscotée. |
|||
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 816 ![]() |
salut,
group by puis utilise group_concat pour rassembler les différentes valeurs en une seule colonne sinon le group by ne changera rien et tu auras autan de ligne mais simplement ordonnées par la colonne de regroupement
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#6 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 861 ![]() |
En fait ta requête de départ, bien que hérétique, devrait fonctionner à vue d'oeil.
Tu pourrais nous fournir un petit dump de la base pour tester ? |
|
|
00
|
|
|
#7 | |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Citation:
Je ne veux pas une seule colonne mais bien autant de colonnes que de statuts le tout regroupé sur une seule ligne. Soit : Nom espèce | statut 1 | statut 2| statut 3 | Espece 1 | aa |null |dd|ff A noter que les espèces n'ont pas l'ensemble des statuts |
|
|
|
00
|
|
|
#8 | |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Citation:
Regarde en PJ, deux captures d'écrans Non.jpg te montre ma requête Oui.jpg te montre ce que j'aimerais obtenir.
|
|
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Salut,
MySQL n'est vraiment pas outillé pour ce genre de requête. L'utilisation de GROUP_CONCAT est bonne sauf que les performances seront catastrophiques. Pour peu que le jeu de données soit conséquent et là le délai de réponse va s'allonger sérieusement. Il n'y pas 36 soluces à mon avis, mis à part une procédure stockée, tu peux toujours essayer un truc de ce genre : Code sql :
Ce que tu cherches à obtenir est proche du résultat d'un tableau croisé dynamique et gérer ça sous MySQL n'est pas chose aisée. Sans compter en plus l'approche table EAV. Tu dépasses les limites de ce que MySQL est capable de manipuler facilement... N'oublie pas de poser des index...
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#10 | |||||
![]() ![]() |
C'est normal que tu aies plusieurs lignes à cause de la première jointure interne :
Citation:
La solution du GROUP BY sera la plus pratique. Code SQL :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. 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 la suite Linux Mageïa ! |
|||||
|
10
|
|
|
#11 |
|
Membre confirmé
![]() Inscription : avril 2011 Messages : 603 ![]() |
Merci à tous pour vos réponses
![]() Mention spéciale à Cinephil pour sa requête imparable. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com