{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
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 !

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
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
5
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
Il manque le 'FROM Book' avant le 'left outer'
3
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
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.
0
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
Salut,
Je ferais plus quelque chose comme
SELECT BookID,group_concat(SubjectID) as SubjectID FROM table GROUP BY BookID
1
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 !
0

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
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

0
Merci de ta réponse.

A quoi correspondent les B_1 et B_2 ?
Quand je lance cette requête, "#1054 - Unknown column 'B_2.SubjectID' in 'field list'" apparaît, évidemment...
0
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...
0
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
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)
0
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
0
Tableau BLOB bizarre créé:
BookID SubjectID
157 [BLOB - 3o]
172 [BLOB - 7o]
0
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
0
un p'tit up ?
0
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
0