Fusionner/Concatener lignes SQL

Résolu/Fermé
MontSouris Messages postés 8 Date d'inscription jeudi 5 novembre 2015 Statut Membre Dernière intervention 25 juillet 2016 - 25 juil. 2016 à 10:27
 MontSouris - 2 août 2016 à 19:12
Bonjour à tous,

J'aimerais pouvoir fusionner des lignes de ma requête en fonction de l'ID.

Voici ci-dessous un schéma de ma table et ce que j'aimerais avoir au final:

Ma table actuelle :
1 2 3 4 X X X
1 3 4 5 X X X
1 3 4 6 X X X

=> ce que j'aimerais avoir
1 2 3 4 5 6 X X X

J'ai essayé de faire un GROUP BY ou de concatener mais rien n'y fait.

Merci d'avance pour vos réponses!

MS

2 réponses

Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370
25 juil. 2016 à 10:28
Un peu bizarre, je ne comprends pas bien ce que tu veux faire.
Un SELECT DISTINCT peut etre ?
0
Bonjour Danelectro,

La mise en page de ma table dans mon exemple n'a pas marché. Ci-dessous, une maquette un peu plus explicite :

______Col 1__Col 2__Col 3__Col 4__Col 5__Col 6
L1_____1____2_____3_____4____Null____Null
L2_____1____2_____3____Null_____5____Null
L3_____1____2_____3____Null___Null_____6

______Col 1__Col 2__Col 3__Col 4__Col 5__Col 6
L1_____1_____2_____3_____4_____5_____6

Quand j'effectue un left join entre mes deux tables, ma requête me retourne des doublons sur les colonnes 1, 2 et 3 et rajoute une valeur distincte pour les colonnes 4, 5 et 6 sur trois lignes.

J'aimerais pouvoir tout avoir sur la même ligne et ainsi supprimer les doublons. J'ai essayé avec un select distinct mais ça ne marche pas visiblement.

Merci d'avance pour ta réponse,

MS
0
Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370
26 juil. 2016 à 15:16
Ok je vois un peu mieux. Etonnant de vouloir associer à des tuples des valeurs qui ne leur correspondent pas, mais peut-être que dans ton cas c'est justifié.

Par contre je ne comprends pas, tu as 2 tables ? Le premier tableau dessiné et le deuxième ?
0
En réalité, la première table est la table finale issue de trois tables différentes liées par des left join. Ces tables là sont reliées entre elles via l'ID qui correspond à la colonne 1 de la première table.

Moi, j'aimerais arriver au résultat de la table du dessous, c'est-à-dire concatener les valeurs identiques sans les dupliquer, et reprendre les valeurs distinctes sur une seule et même ligne.

Afin de fusionner les lignes en doublons mais conserver les valeurs distinctes sur la même ligne, j'utilise la fonction GROUP BY. Elle m'impose donc d'ajouter des agrégats.

Cependant, mes données sont en varchar. Calculer un max, min ou sum sur un format texte devient donc totalement illogique. A ce niveau là, ma requête plante.

As-tu une idée du problème ou comment le résoudre? J'ai cru comprendre qu'un CONVERT pourrait éventuellement m'aider mais je ne sais pas trop par où commencer.

Merci pour ton aide,

MS
0
Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370 > Montsouris
28 juil. 2016 à 15:09
Ah oui c'est plus clair. Oui faut sans doute passer par un GROUP BY <id>, et un GROUP BY n'implique pas forcément d'utiliser un agrégat.

Quelques éléments de réponses ici
https://forum.hardware.fr/hfr/Programmation/SGBD-SQL/sql-regrouper-donnees-sujet_67624_1.htm

et ici
https://sql.sh/cours/group-by

Sinon tu peux gérer ça avec un curseur je pense.
0
Merci pour ta réponse! Ton forum m'a bien aidé. Je bascule ma demande en résolu ;)
0