Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insérer une table dans une autre

Insérer des éléments d'une colonne dans des lignes d'une autre table

Sujet résolu
    12 juillet 2019 à 13:24:02

    Bonjour,

    Je travaille sur phpMyAdmin.

    J'ai réussie à insérer dans une table que j'ai créé (q0_problems) des colonnes (id,hypothesis,question,answer,q0_count) d'une autre table (problems).

    --> Avec : INSERT INTO q0_problems(`id`, `conclusion`, `question`, `answer`, `q0_count`) SELECT id,hypothesis,question,answer,q0_count FROM problems

    Et je souhaiterais également ajouter dans les colonnes p1, p2, p3, p4 et p5 de la table q0_problems des phrases.

    Les phrases sont dans la colonne content de la table premises.

    Elles seront insérer dans chaque ligne de la table q0_problems (les numéros des problèmes seront dans le colonne id) en fonction de si id = problem_id (colonne contenant les numéros des problèmes dans la table prémises).

    Et une phrase sera insérer dans p1, p2, p3, p4 ou p5 en fonction de la valeur dans la colonne "order" (valeur entre 1 et 5).

    Est ce que c'est possible de faire cela ? Et comment faire ?

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2019 à 13:44:07

      Est-ce que par hasard les clés étrangères ne répondraient pas à tes besoins ?

      Sinon, est-ce que tu peux donner un exemple de ce que tu veux parce que c'est encore assez flou à la lecture.

      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2019 à 13:50:21

        Bonjour,

        Je crains aussi qu'il y ait un problème de conception ...

        Pourquoi dupliquer les informations de la table d'origine ?

        En plus de l'exemple demandé par Zachee54, peut-on connaître la structure de la table premises ?

        • Partager sur Facebook
        • Partager sur Twitter
        Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
          12 juillet 2019 à 14:19:33

          Et la table premise ?

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            12 juillet 2019 à 14:47:18

            À mon avis c'est une très mauvaise idée de vouloir faire des colonnes p1, p2, p3, p4, p5 dans ta table q0_problems.

            Il suffit de faire une requête dans q0_problems pour avoir la question, puis une autre dans premises pour avoir les 5 phrases.

            Ou si tu veux tout faire en une requête :

            SELECT
              q0_problems.*,
              premises.content
            FROM q0_problems
            JOIN premises ON (q0_problems.id = premises.problem_id)
            ORDER BY premises.order ASC
            • Partager sur Facebook
            • Partager sur Twitter
              12 juillet 2019 à 14:55:11

              Je ne peux envoyer qu'une seule photo et qu'un seul message à la fois après une réponse.

              Je vais aussi vous envoyer la nouvelle table q0_problems.

              En faite, la nouvelle table doit regrouper les deux tables.

              En gros, il y 346 problèmes (les numéros dans les tables sont id / problem_id) avec entre 1 et 5 prémises (content dans la table premises).

              Je veux que les prémises d'un problème apparaissent sur la même ligne du problème (ce qui n'est pas le cas dans la table premises).

              Pour faire la nouvelle table j'ai repris les paramètres des autres tables (je peux vous les montrer si vous voulez).

              # J'ai essayé ça mais ne fonctionne pas

              INSERT INTO q0_problems(`p1`) SELECT content FROM premises WHERE q0_problems.id = premises.problem_id AND premises.order = 1

              INSERT INTO q0_problems(`p2`) SELECT content FROM premises WHERE (q0_problems.id = premises.problem_id and premises.order = 2)

              INSERT INTO q0_problems(`p3`) SELECT content FROM premises WHERE (q0_problems.id = premises.problem_id and premises.order = 3)

              INSERT INTO q0_problems(`p4`) SELECT content FROM premises WHERE (q0_problems.id = premises.problem_id and premises.order = 4)

              INSERT INTO q0_problems(`p5`) SELECT content FROM premises WHERE (q0_problems.id = premises.problem_id and premises.order = 5)

              #

              • Partager sur Facebook
              • Partager sur Twitter
                12 juillet 2019 à 15:03:48

                ManonBOUDET a écrit:

                Je veux que les prémises d'un problème apparaissent sur la même ligne du problème (ce qui n'est pas le cas dans la table premises).

                Ca, c'est par principe une très mauvaise idée. On ne t'aidera pas à le faire parce que c'est mal. :pirate:

                Explique-nous plutôt pourquoi tu veux ça. C'est sans doute que tu n'as pas perçu la bonne façon de récupérer tes données et de t'en servir.

                • Partager sur Facebook
                • Partager sur Twitter
                  12 juillet 2019 à 16:09:29

                  Zachee54 a écrit:

                  On ne t'aidera pas à le faire parce que c'est mal

                  Je valide !

                  Ensuite, il y a aussi redondance dans les textes des questions et des réponses ...

                  Tu as des hypothèses (problems), des questions (questions) et des réponses possibles (premises). 3 entités = 3 tables.

                  Dans ton cas, les relations semblent être les suivantes :

                  Une question est relative à une hypothèse. Une hypothèse peut être liée à plusieurs questions. Relation 1,n.

                  Une question a plusieurs réponses possibles (avec un ordre précis). Une réponse possible peut-être liée à plusieurs questions. Relation n,n.

                  Ton modèle devrait donc être en 4 tables :

                  • hypothesis ( id [pk], content )
                  • problems ( id [pk], id_hypothesis [fk], content, etc. )
                  • premises ( id [pk], content, etc. )
                  • problems_premises ( id_problems [pk][fk], id_premises [pk][fk], order )

                  Par ailleurs, qu'est-ce que tu comptes dans la colonne q0_count ? A mon avis ... il y a aussi un loup derrière ... :)

                  -
                  Edité par Benzouye 12 juillet 2019 à 16:10:36

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                  Insérer une table dans une autre

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown