Transformer une jointure en liste (GROUP BY ?) [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 18-02-2006 à 17:48:18
ReplyMarsh Posté le 18-02-2006 à 18:27:26
Sebou77 a écrit : bah comme tu le dis c'est avec un group by sur intervenant |
Si je fais un GROUP BY (I.identite) ça donne
Intervenant 1 - Module 1
Intervenant 2 - ...
...
Ca ne donne pas une liste, en tout cas ça n'en donne pas une avec MySQL.
Marsh Posté le 20-02-2006 à 11:22:28
Si c'est juste une histoire de présentation des résultats (colonne vers liste), inutile de chercher. Les bases de données font de l'extraction, pas de la mise en forme.
Marsh Posté le 20-02-2006 à 11:26:02
Sebou77 a écrit : bah comme tu le dis c'est avec un group by sur intervenant |
euh non, pas du tout.
Suivant les SGBD tu risques même de te faire insulter, à faire ça.
Marsh Posté le 20-02-2006 à 11:27:03
jeoff a écrit : Si c'est juste une histoire de présentation des résultats (colonne vers liste), inutile de chercher. Les bases de données font de l'extraction, pas de la mise en forme. |
pluzun. Le SGBD te permet de récupérer des données, à toi de traiter ce qu'il te file pour l'afficher comme tu le souhaites.
Marsh Posté le 20-02-2006 à 12:17:08
Dost67 a écrit :
|
tu ne peux pas. C'est du post-traitement. Donc tu ordonnes ton resultat par intervenant, et en parcourant les resultats tu créés ta liste de module. A chaque changement d'intervenant tu repars sur une nouvelle liste de modules.
Marsh Posté le 20-02-2006 à 19:46:28
OK, comme ça c'est clair. Donc si je veux une liste en sortie il faut que je stocke des listes dans la base de données ou alors que je transforme ces infos en liste avec du PHP par exemple.
Marsh Posté le 20-02-2006 à 21:00:18
Quel SGBD ?
Avec MySQL, il y a la fonction "GROUP_CONCAT" qui permet de faire ca
Marsh Posté le 21-02-2006 à 13:35:28
mrbebert a écrit : Quel SGBD ? |
Je l'ai fait avec MySQL mais c'est un exo pour l'école et là bas on utilise DB2.
Marsh Posté le 18-02-2006 à 17:45:20
SELECT I.identite, M.intitule
FROM intervenants I, intervenants_modules IM, modules M
WHERE I.numero = IM.numero_intervenant AND M.numero = IM.numero_module
Intervenants -> numero
identite
Modules -> numero
intitule
Intervenants_modules -> numero_intervenant
numero_module
Le problème c'est qu'au final j'ai :
Intervenant 1 - Module 1
Intervenant 1 - Module 2
Intervenant 1 - Module 3
...
Et que je voudrais transformer ça en liste :
Intervenant 1 - (Module 1, Module 2, Module 3)
Si c'est possible ?
Merci d'avance.