{MySQL} Fusionner deux lignes
LeGhe
-
Darkito Messages postés 1191 Date d'inscription Statut Membre Dernière intervention -
Darkito Messages postés 1191 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
BookID SubjectID
172 674
172 656
175 612
180 34766
180 616
Comment obtenir :
BookIDSubjectID
172 674,656
175 612
180 34766,616
?
Merci de votre aide !
BookID SubjectID
172 674
172 656
175 612
180 34766
180 616
Comment obtenir :
BookIDSubjectID
172 674,656
175 612
180 34766,616
?
Merci de votre aide !
Configuration: Windows Vista Firefox 3.0.11
12 réponses
-
Dans ce cas la, une petite jointure suffit (on va me prendre pour un maniaque de la jointure :p)
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 -
-
Salut,
Je ferais plus quelque chose commeSELECT 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 ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 :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... -
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) -
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 -
-
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 -
-
Grand merci à toi pour ton temps...
Mais cela ne fonctionne pas :
#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 'LEFT OUTER JOIN bookxsubject ON (bookxsubject.BookID=book.ID) GROUP BY book.' at line 2