Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petite question sur MySql

Sujet résolu
    30 mars 2020 à 4:10:27

    Bonjour/Bonsoir, j'aurais une petite question sur MySql, j'ai importer des données sur une table depuis Excel (CSV), mais sur une colonne (province/citée), j'ai deux données je voudrais savoir si il est possible de rendre ce champ atomique sur MySql, je précise MySql car je sais comment le faire sur Excel, voici une image de la colonne :

    Merci d'avance ^^,

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2020 à 11:25:49

      Bonjour,

      Peux-tu détailler un peu le fonctionnement souhaité ?

      Normalement tu devrais avoir 2 tables : province et citée, avec des clés étrangères pour lier une cité à sa province ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        30 mars 2020 à 13:24:37

        Benzouye a écrit:

        Bonjour,

        Peux-tu détailler un peu le fonctionnement souhaité ?

        Normalement tu devrais avoir 2 tables : province et citée, avec des clés étrangères pour lier une cité à sa province ...


        Bon tout simplement, est-ce que la colonne Province/citée je peux la transformer en deux colonnes une pour province et l'autre pour citée SUR MySQL (je travaille avec wampserver)

        -
        Edité par AdelMenacer 30 mars 2020 à 13:24:55

        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2020 à 13:34:24

          Que représentent les enregistrements de cette table ?

          Imaginons que ce sont des événements, juste pour l'exemple. 

          Ta base de données devrait avoir 3 tables :

          province ( id_province [pk], nom )

          citee ( id_citee [pk], nom )

          evenement ( id_evenement [pk], id_citee [fk], etc. )

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            30 mars 2020 à 14:23:29

            Enfaîte vous ne m'avez pas bien compris cette table n'a pas de clés primaire, étrangères ect... c'est pas une base de donnée c'est juste une table, j'ai besoin de migrer les données de cette table vers une autre bdd, mais j'ai besoin de province seule et citee seule ducoup je voulais savoir si je pouvais tranformer cette table en deux colonnes une pour province et une pour ville, vous voyez ?

            • Partager sur Facebook
            • Partager sur Twitter
              30 mars 2020 à 16:04:34

              Si, j'avais bien compris ... je tenais juste à signaler que c'était une erreur que de fonctionner ainsi et proposais une solution plus rigoureuse et normalisée ...

              Maintenant si tu veux vraiment continuer à fonctionner ainsi, il faut dans cet ordre :

              • ajouter une colonne "Citée" et une colonne "Province" à cette table
              • récupérer la partie texte après le tiret et la mettre dans "Citée"
              • récupérer la partie texte avant le tiret et la mettre dans "Province"
              • Supprimer la colonne d'origine "Province/Citée"

              Cela se fera ainsi en SQL :

              ALTER TABLE matable
              	ADD COLUMN province VARCHAR(60) NULL,
              	ADD COLUMN citee VARCHAR(60) NULL;
              
              UPDATE matable
              SET citee = SUBSTRING( `Province/Citée`, LOCATE( ' - ', `Province/Citée` )+3 )
              WHERE LOCATE( ' - ', `Province/Citée` ) > 0;
              
              UPDATE matable
              SET province =  SUBSTRING( `Province/Citée`, 1, LOCATE( ' - ', `Province/Citée` ) )
              WHERE LOCATE( ' - ', `Province/Citée` ) > 0;

              Si le résultat est convenable, ce que tu peux tester avec un SELECT * FROM matable, alors tu peux supprimer la colonne d'origine :

              ALTER TABLE matable
              	DROP COLUMN `Province/Citée`;

              Mais dis-toi bien que ce n'est pas une façon de faire pérenne et évolutive ... Tu es à la merci des fautes de frappe, d'orthographe et de casse ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                30 mars 2020 à 21:20:10

                Benzouye a écrit:

                Si, j'avais bien compris ... je tenais juste à signaler que c'était une erreur que de fonctionner ainsi et proposais une solution plus rigoureuse et normalisée ...

                Maintenant si tu veux vraiment continuer à fonctionner ainsi, il faut dans cet ordre :

                • ajouter une colonne "Citée" et une colonne "Province" à cette table
                • récupérer la partie texte après le tiret et la mettre dans "Citée"
                • récupérer la partie texte avant le tiret et la mettre dans "Province"
                • Supprimer la colonne d'origine "Province/Citée"

                Cela se fera ainsi en SQL :

                ALTER TABLE matable
                	ADD COLUMN province VARCHAR(60) NULL,
                	ADD COLUMN citee VARCHAR(60) NULL;
                
                UPDATE matable
                SET citee = SUBSTRING( `Province/Citée`, LOCATE( ' - ', `Province/Citée` )+3 )
                WHERE LOCATE( ' - ', `Province/Citée` ) > 0;
                
                UPDATE matable
                SET province =  SUBSTRING( `Province/Citée`, 1, LOCATE( ' - ', `Province/Citée` ) )
                WHERE LOCATE( ' - ', `Province/Citée` ) > 0;

                Si le résultat est convenable, ce que tu peux tester avec un SELECT * FROM matable, alors tu peux supprimer la colonne d'origine :

                ALTER TABLE matable
                	DROP COLUMN `Province/Citée`;

                Mais dis-toi bien que ce n'est pas une façon de faire pérenne et évolutive ... Tu es à la merci des fautes de frappe, d'orthographe et de casse ...

                Merci ça répond à ma question ;).



                • Partager sur Facebook
                • Partager sur Twitter

                Petite question sur MySql

                × 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