{MySQL} Fusionner deux lignes
Fermé
LeGhe
-
23 juin 2009 à 09:22
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 24 juin 2009 à 09:43
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 24 juin 2009 à 09:43
A voir également:
- Sql regrouper plusieurs lignes en une seule
- Regrouper plusieurs feuilles excel en une seule - Guide
- Comment regrouper plusieurs pdf en un seul - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Partager photos en ligne - Guide
- Mettre une seule page en paysage word - Guide
12 réponses
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
23 juin 2009 à 16:49
23 juin 2009 à 16:49
Dans ce cas la, une petite jointure suffit (on va me prendre pour un maniaque de la jointure :p)
A peaufiner avec l'histoire des blob / text
SELECT Book.ID, Book.title, group_concat(bookxsubject.SubjectID) LEFT OUTER JOIN bookxsubject ON bookxsubject.BookID=Book.ID GROUP BY Book.ID, Book.title
A peaufiner avec l'histoire des blob / text
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
23 juin 2009 à 17:29
23 juin 2009 à 17:29
Il manque le 'FROM Book' avant le 'left outer'
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
24 juin 2009 à 09:43
24 juin 2009 à 09:43
Au temps pour moi, j'ai été un peu vite dans ma réponse.
@ LeGhe :
En même temps, c'est une erreur que tu aurais pu voir par toi même...
Rejette un œil sur les bases de la syntaxe SQL.
Ca t'aidera à comprendre le principe des jointures qui est appliqué ici.
@ LeGhe :
En même temps, c'est une erreur que tu aurais pu voir par toi même...
Rejette un œil sur les bases de la syntaxe SQL.
Ca t'aidera à comprendre le principe des jointures qui est appliqué ici.
Dr Zoidberg
Messages postés
529
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
100
23 juin 2009 à 11:58
23 juin 2009 à 11:58
Salut,
Je ferais plus quelque chose comme
Je ferais plus quelque chose comme
SELECT BookID,group_concat(SubjectID) as SubjectID FROM table GROUP BY BookID
Ca ne doit pas être bien compliqué, mais j'avoue qu'en tant que débutant, je m'arrache les cheveux depuis hier soir...
Merci à tou(te)s !
Merci à tou(te)s !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
23 juin 2009 à 11:22
23 juin 2009 à 11:22
Bonjour,
J'ai également rencontré ce problème et j'attendais de voir si quelqu'un avait la solution :p
Dans mon cas, le nombre de "sujet" possible pour un "livre" était un nombre fini.
Il y a alors moyen d'arriver au résultat que tu souhaite en faisant une jointure sur ta propre table.
Si tu n'as que 2 "sujet" possible, une solution est :
J'ai appelé la table BOOK mais a toi de changer.
S'il y a plus que 2 sujets possibles, ca devient un peu plus compliqué pour éviter les doublons mais ca reste faisable
J'ai également rencontré ce problème et j'attendais de voir si quelqu'un avait la solution :p
Dans mon cas, le nombre de "sujet" possible pour un "livre" était un nombre fini.
Il y a alors moyen d'arriver au résultat que tu souhaite en faisant une jointure sur ta propre table.
Si tu n'as que 2 "sujet" possible, une solution est :
SELECT DISTINCT B_1.BookID, B_1.SubjectID || ', ' || B_2.SubjectID FROM BOOK B_1 LEFT OUTER JOIN BOOK B_2 ON B_2.BookID=B_1.BookID AND B_2.SubjectID<>B_1.SubjectID
J'ai appelé la table BOOK mais a toi de changer.
S'il y a plus que 2 sujets possibles, ca devient un peu plus compliqué pour éviter les doublons mais ca reste faisable
BookID B_1.SubjectID || ', ' || B_2.SubjectID
340 1
343 1
346 1
Je m'étais trompé dans la requête.
Cela, celle-ci ne met que la valeur "1" dans la nouvelle colonne...
340 1
343 1
346 1
Je m'étais trompé dans la requête.
Cela, celle-ci ne met que la valeur "1" dans la nouvelle colonne...
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
23 juin 2009 à 11:44
23 juin 2009 à 11:44
j'ai mis une syntaxe db2 , tu dois surement être en mySql, essaie avec
BookID B_1.SubjectID + ', ' + B_2.SubjectID
Voire plus "propre" :
CONCAT_WS(',',BookID B_1.SubjectID,B_2.SubjectID)
BookID B_1.SubjectID + ', ' + B_2.SubjectID
Voire plus "propre" :
CONCAT_WS(',',BookID B_1.SubjectID,B_2.SubjectID)
non...
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.SubjectID + ',' + B_2.SubjectID FROM bookxsubject B_1 LEFT OUTER JOIN bookxsub' at line 3
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.SubjectID + ',' + B_2.SubjectID FROM bookxsubject B_1 LEFT OUTER JOIN bookxsub' at line 3
MERCI !!!!!
En changeant le type du champ SubjectID de blob a text, cela fonctionne nickel !!
Si je peux abuser, quelle requête lancer pour ajouter à ce champ SubjectID, toujours dans le même esprit (x,y,z,...) des champs d'une autre table ?
exemple :
TABLE Book
ID Title Country
157 livre1 600
TABLE bookxsubject
BookID SubjectID
157 599
157 656
Résultat recherché
TABLE bookfinal
ID Title Subjects
157 livre1 600,599,656
En changeant le type du champ SubjectID de blob a text, cela fonctionne nickel !!
Si je peux abuser, quelle requête lancer pour ajouter à ce champ SubjectID, toujours dans le même esprit (x,y,z,...) des champs d'une autre table ?
exemple :
TABLE Book
ID Title Country
157 livre1 600
TABLE bookxsubject
BookID SubjectID
157 599
157 656
Résultat recherché
TABLE bookfinal
ID Title Subjects
157 livre1 600,599,656