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 :

Combiner des lignes de résultat


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Avatar de cahnory
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 203
    Points : 401
    Points
    401
    Par défaut Combiner des lignes de résultat
    Bonjour à tous ! Je suis en train de concevoir pour le travaille un backoffice gérant un catalogue. Celui-ci sera rempli en ligne par le client et nous le récupérons via un plugin pour indesign.
    La récupération des informations se fait par le biais d'une requête sql (ça passe par le gestionnaire odbc mais je saurai pas du tout vous dire à quoi ça sert ^^ en tout cas ça prend toute requête sql traditionnelle) entré dans le plug-in.
    Lors du développement d'une précédente version, j'avais du avoir recours à un script d'export à exécuter avant de mettre à jours les information du catalogue papier apres modification sur la base.
    J'ai été obligé de faire ça car les produits du catalogues pouvait chaqu'un avoir un nombre variable de couleurs (, tailles...) mais il fallait que toute les infos d'un produit tiennent en une ligne, hors, les jointures multipliait le nombre de ligne.
    Codant la nouvelle version j'aimerai à présent éviter d'avoir à passer par ce script car au passage il empêche l'utilisation d'une fonctionnalité du plugin qui est de pouvoir modifier les infos de la base en modifiant le contenu du catalogue indesign (un retour, plus possible en se servant du script d'export qui génere une nouvelle table).

    J'ai fait un petit shéma simplifié pour vous donner une idée de ce que j'aimerai obtenir :

    voitures('id','nom'); couleurs('id','nom'); couleur_par_voiture('id','couleur_id','voiture_id');
    |
    |=>voitures('id','nom','couleur1','couleur2',...);

    ou, plus simple :

    photos('id','titre'); commentaires('id','photo_id','body');
    |
    |=>photos('id','titre','body1','body2',...);

    Comme vous pouvez le voir en sélectionnant photo et en le joignant à commentaire j'aurai autant de ligne que de commentaire.
    J'avoue être à court d'idée là alors je m'en remet à vous.

    Merci de votre attention et de vos futures réponses

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Si tu ne connais pas le nombre maximal de couleurs, de tailles, de body (etc...), ça n'est pas possible... Il faut, pour cela, faire une jointure par couleur, taille, body. Donc il faut connaître leur nombre à l'avance.

    Ce qui est certain, c'est que le SQL n'est pas prévu pour ça, et que c'est du coup plutôt le rôle d'une application de faire la cosmétique des données renvoyées par la requête.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre averti
    Avatar de cahnory
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 203
    Points : 401
    Points
    401
    Par défaut
    Merci pour ta réponse, je serrai intéressé de savoir comment c'est possible si l'on connait le nombre de chaque élément.
    Merci à toi

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    En fait, dans ton cas, ça n'est pas trop possible.
    C'est de ma faute , je n'ai pas trop analysé ton problème. On arrive à tout mettre sur une ligne quand on choisi déjà une couleur (mais pas quand on ne connaît pas la couleur de la voiture à priori). Par exemple, on aura le modèle de voiture et on décline toutes les couleurs en colonnes, et on met des 1 et des 0 si la couleur existe pour ce modèle ou pas. Ca, c'est faisable.
    Mais mettre voiture, couleur1, couleur2 en une seule requête, c'est beaucoup plus chaud.
    Je pense que c'est faisable en une seule requête, mais c'est juste pour la beauté du sport, parce que ça sera bourré de sous-requêtes et ça aura des performances horribles... ou alors, on peut passer par des tables temporaires...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre averti
    Avatar de cahnory
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 203
    Points : 401
    Points
    401
    Par défaut
    Bah en fait tu m'as donné une idée !
    Partant du principe qu'il fallait définir le nombre de couleurs au préalable j'ai fait un script d'install qui ajoute des champs à mes tables de tel sorte que je puisse choper toute les infos en un select et quelques jointures.
    Comme tu dit, pour la beauté du sport j'aurai aimé gardé mes infos éclatées dans la base et réussir à tout sortir formaté comme je veu en une requête mais bon, je fait pas ça pour le fun, même si ça m'amuse, alors faut avancer et là ça marche !
    Merci à toi

    Même si techniquement j'ai contourné et non résolu le problème, on peut le considérer ainsi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Combiner des lignes en doublon
    Par arnaud.lucas dans le forum R
    Réponses: 1
    Dernier message: 16/12/2011, 11h16
  2. Réponses: 0
    Dernier message: 15/04/2011, 08h13
  3. [MySQL] Condition en fonction des lignes de résultat d'une requête
    Par darkloy dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/09/2008, 23h01
  4. Limiter le nombre des lignes en résultat
    Par Grand sorcier dans le forum Oracle
    Réponses: 1
    Dernier message: 11/07/2006, 14h30
  5. [XSLT] numérotation des lignes du tableau résultat
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/02/2006, 09h48

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