IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Extraction d'une chaine avec séparateurs


Sujet :

Requêtes MySQL

  1. #1
    kaceo
    Invité(e)
    Par défaut Extraction d'une chaine avec séparateurs
    Bonjour !

    Je dois extraire des informations d'une base de donnée (pas très bien pensée mais je dois faire avec...) pour les mettre dans un fichier excel. La table "principale" est de la forme :

    id | titre | auteurs_id
    1 | livre1 | 5;8
    2 | livre2 | 6;7;8


    et la table auteur est de la forme
    aid | nom | prenom
    5 | nom5 | prenom5
    6 | nom6 | prenom6
    7 | nom7 | prenom7
    8 | nom8 | prenom8


    en php, le champ auteurs_id était utilisé avec une fonction explode en utilisant le séparateur ";"

    mon but c'est d'obtenir une table du type

    id | titre | auteurs
    1 | livre1 | prenom5 nom5, prenom8 nom8
    2 | livre2 |
    prenom6 nom6, prenom7 nom7, prenom8 nom8

    afin de pouvoir l'extraire en fichier excel


    mais je ne sais pas si c'est possible, et comment faire pour séparer les auteurs_id en mysql
    si ça n'est pas possible, y a-t-il une solution, d'une autre manière, pour extraire les informations qu'il me faut pour les rassembler dans un seul tableau ?

    je ne sais pas si j'ai été très clair... en tout cas merci à l'avance si vous pouvez m'aider !

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !!

    le plus simple, je pense, serait de rajouter une table intermédiaire :
    main_auteur :
    main_id | auteur_id
    1 | 5
    1 | 8
    2 | 6
    etc...

    comme ça pour tout retrouver ensuite, tu n'as qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT M.titre, CONCAT(A.nom, A.prenom) AS auteur
    FROM principale AS M
    <div style="margin-left:40px">INNER JOIN main_auteur AS MA
    <div style="margin-left:40px">ON MA.main_id = M.id</div><div style="margin-left:40px">INNER JOIN auteur AS A
    <div style="margin-left:40px">ON A.aid = MA.auteur_id</div></div></div>ORDER BY titre
    Par contre tu as une ligne par auteur et par livre...

    ensuite, en supposant que le résultat de la requête précédente soit dans une table "temp", peut-être ceci t'aidera (mais j'en doute) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT titre, CONCAT(auteur, ',') AS auteurs
    FROM temp
    GROUP BY titre
    ORDER BY titre
    sinon, il te faudra extraire les infos et faire la concaténation des noms d'auteurs à la main avec un langage extern...

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/05/2014, 12h03
  2. Découper une chaine avec un séparateur strtok
    Par ZeRevo dans le forum Débuter
    Réponses: 16
    Dernier message: 14/08/2009, 15h50
  3. [VB.NET] Compléter une chaine avec des espaces
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 09h09
  4. Affichage de l'adresse d'une chaine avec cout
    Par thierryguilbert dans le forum SL & STL
    Réponses: 4
    Dernier message: 14/03/2005, 16h04
  5. Extraction d'une chaine de caractères
    Par megane dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2004, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo