{MySQL} Fusionner deux lignes

LeGhe -  
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 !
Configuration: Windows Vista
Firefox 3.0.11

12 réponses

  1. Darkito Messages postés 1191 Date d'inscription   Statut Membre Dernière intervention   545
     
    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
  2. Dr Zoidberg Messages postés 547 Statut Membre 100
     
    Il manque le 'FROM Book' avant le 'left outer'
    3
    1. Darkito Messages postés 1191 Date d'inscription   Statut Membre Dernière intervention   545
       
      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
  3. Dr Zoidberg Messages postés 547 Statut Membre 100
     
    Salut,
    Je ferais plus quelque chose comme
    SELECT BookID,group_concat(SubjectID) as SubjectID FROM table GROUP BY BookID
    
    1
  4. LeGhe
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Darkito Messages postés 1191 Date d'inscription   Statut Membre Dernière intervention   545
     
    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
    1. LeGhe
       
      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
  7. LeGhe
     
    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
  8. Darkito Messages postés 1191 Date d'inscription   Statut Membre Dernière intervention   545
     
    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
  9. LeGhe
     
    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
  10. LeGhe
     
    Tableau BLOB bizarre créé:
    BookID SubjectID
    157 [BLOB - 3o]
    172 [BLOB - 7o]
    0
  11. LeGhe
     
    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
  12. LeGhe
     
    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