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

Langage SQL Discussion :

Transformation plusieurs en colonnes


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut Transformation plusieurs en colonnes
    Bonjour,

    J'aimerais bien réalisé une opération en SQL mais je ne pense pas que ce soit possible.
    Je vais donner un exemple simple.

    J'ai des recettes et chaque recette a des ingrédients.

    recette (Id, Nom)
    ingredient (Id, Nom, Recette)

    Je voudrais afficher toutes ces recettes dans un tableau.
    Le problème c'est que la solution que je vois c'est de ramener toutes les recettes, puis pour chacune ramener tous les ingrédients.
    Ce qui donne un grand nombre de requête à faire.
    Ou alors, de ramener toutes les recettes et tous les ingrédients, puis de faire un traitement dessus, ce qui me permet un peu mieux.

    J'aimerais savoir si on pourrait ramener directement le résultat en ayant une recette par ligne puis un nombre x de colonnes pour chaque ingrédients ?
    Mes sites :
    - Portail : http://www.azharis.fr/
    - Neuroshima Hex : http://neuroshima-hex.azharis.fr/
    - Monolith Arena : http://monolith-arena.azharis.fr/

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    recette (Id, Nom)
    ingredient (Id, Nom, Recette)
    As-tu donc si peu de recettes et d'ingrédients que ces derniers ne peuvent servir que dans une seule recette ?

    Selon moi, la règle de gestion serait plutôt la suivante :
    "Un ingrédient peut être utilisé dans plusieurs recettes et une recette utilise de 1 à plusieurs ingrédients."

    Ce qui donne le MCD suivant :
    Recette -1,n----utiliser----0,n- Ingrédient

    Ce qui donne les tables :
    recette (r_id, r_nom...)
    ingredient (i_id, i_nom...)
    utiliser (u_id_ingredient, u_id_recette...)

    Si tu veux toutes les recettes et leurs ingrédients, tu fais la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT r.r_nom, i.i_nom
    FROM recette AS r
    INNER JOIN utiliser AS u ON u.u_id_recette = r.r_id
      INNER JOIN ingredient AS i ON i.i_id = u.u_id_ingredient
    ORDER BY r.r_nom, i.i_nom
    Ensuite c'est à ton programme de mettre en forme les données retournées par la requête.
    Mais ce n'est plus le même forum.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut
    Merci pour ta réponse.

    Pour les relations, j'ai simplifié le problème pour ne garder que l'objet du problème.
    J'ai oublié de préciser que j'ai un bon niveau en SQL, je cherche surtout une solution que je ne connaitrais pas.

    La solution que tu me donnes correspond à la deuxième que j'ai exposé, ramener toutes les infos (comme ta requête), puis faire un traitement.

    Je ne vois pas d'autres solutions efficace.

    Je vais laissé ce topic ouvert encore un peu puis si y'a pas d'autres réponses, je la considèrerait comme la meilleure.
    Mes sites :
    - Portail : http://www.azharis.fr/
    - Neuroshima Hex : http://neuroshima-hex.azharis.fr/
    - Monolith Arena : http://monolith-arena.azharis.fr/

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Azharis Voir le message
    Pour les relations, j'ai simplifié le problème pour ne garder que l'objet du problème.
    Euh... moi pas comprendre !

    La solution que tu me donnes correspond à la deuxième que j'ai exposé, ramener toutes les infos (comme ta requête), puis faire un traitement.

    Je ne vois pas d'autres solutions efficace.

    Je vais laissé ce topic ouvert encore un peu puis si y'a pas d'autres réponses, je la considèrerait comme la meilleure.
    C'est la meilleure solution !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut
    Ce n'est pas un vrai exemple, j'ai juste fait une table qui dépendait d'une autre pour illustrer mon problème.

    Je la considère comme la meilleure.

    Merci encore.
    Mes sites :
    - Portail : http://www.azharis.fr/
    - Neuroshima Hex : http://neuroshima-hex.azharis.fr/
    - Monolith Arena : http://monolith-arena.azharis.fr/

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

Discussions similaires

  1. Transformer ligne en colonne
    Par delphine_lep dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/10/2006, 14h15
  2. transformation lignes en colonne
    Par marti dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/06/2006, 17h13
  3. Requête : Transformer lignes en colonnes
    Par bleu_ciel dans le forum Access
    Réponses: 6
    Dernier message: 27/05/2006, 21h26
  4. [XSLT] Transformer plusieurs XML en même temps
    Par oamram dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/04/2006, 13h41
  5. [Zip] Transformer plusieurs fichiers en fichier zip
    Par Anakior dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 14/12/2005, 15h27

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