Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rajouter les lignes manquantes

Sujet résolu
    17 septembre 2010 à 11:26:34

    Bonjour!

    Je dispose d'une table sql qui contient le nom des etudiants avec leurs notes.
    Certains étudiants n'ont pas de notes, et j'aimerais rajouter ces lignes manquantes en attribuant une note nulle, histoire que mes tables aient une même dimension.

    C'est possible de le faire avec une requete sql?
    • Partager sur Facebook
    • Partager sur Twitter
      17 septembre 2010 à 11:41:00

      Bonjour
      Peux tu être un peu plus précis ?

      Citation : HoneyBunny


      Je dispose d'une table sql qui contient le nom des etudiants avec leurs notes.


      Donc la structure de la table est de la forme Etudiants(id, nom, prenom, note) ?

      Citation : HoneyBunny


      Certains étudiants n'ont pas de notes, et j'aimerais rajouter ces lignes manquantes en attribuant une note nulle, histoire que mes tables aient une même dimension.


      C'est à dire ? Qu'est ce qu'une note nulle ? 0, NULL
      Quelles est la forme de tes lignes ? Celle la

      id nom prenom note
      1 durand toto 10
      1 dupuis titi NULL

      ?
      • Partager sur Facebook
      • Partager sur Twitter
        17 septembre 2010 à 12:05:31

        Citation : angelo

        Donc la structure de la table est de la forme Etudiants(id, nom, prenom, note) ?


        L'ID, le nom (de la matière) et la note.

        Citation : angelo

        C'est à dire ? Qu'est ce qu'une note nulle ? 0, NULL
        Quelles est la forme de tes lignes ? Celle la ?


        La note nulle vaut un 0.
        ID Nom Note
        1 aaa 10
        1 bbb 5
        2 aaa 14
        2 bbb 10
        2 ccc 16

        Je veux inserer (ID, Nom, Note) ---> (1, ccc, 0).
        • Partager sur Facebook
        • Partager sur Twitter
          17 septembre 2010 à 12:11:39

          Tu n'a pas une clé étrangère idEtudiant dans la table des notes pour savoir à qui est la note?
          Dans la table note, la clé primaire est id,nom ?

          Désolé de poser autant de question mais je cherche à bien comprendre :)
          • Partager sur Facebook
          • Partager sur Twitter
            17 septembre 2010 à 12:32:58

            La clé primaire est ID. Un etudiant (ID) peut ne pas avoir de note. (ce qui le cas dans le tableau au dessus et je veux rajouter les notes manquantes en leur attribuant 0). S'il y a une note, il y a automatiquement un nom et vice versa.

            Pas de clé etrangère pour savoir à qui est la note.
            • Partager sur Facebook
            • Partager sur Twitter
              17 septembre 2010 à 15:47:25

              Et on fait comment pour savoir à qui est la note si tu n'as pas de clé étrangère ? Donc, on fait comment pour ajouter ceux qui manquent ?

              C'est pas très clair et ça laisse présager une mauvaise conception de la base de données.
              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2010 à 16:35:26

                C'est un peu compliqué parce que ces notes ont été saisies (il s'agissait d'un formulaire). Donc, au début, la note par defaut etait egale à 0.
                Lorsque j'ai effectué certains calculs, je n'ai pas pris en consideration les notes nulles (il le fallait) et je me retrouve avec des tableaux de dimensions differentes. Pour palier à ce problème, j'ai voulu remettre les notes manquantes à 0.
                • Partager sur Facebook
                • Partager sur Twitter
                  17 septembre 2010 à 16:51:40

                  Je continue à croire que tu n'as pas bien conçu ta table : la valeur 0 est très différente d'une note NULL. Dans le premier cas, ça veut dire que l'étudiant a eu 0 à son cours et dans le deuxième, qu'il n'a pas fait le test. Si tu mets 0 à tout le monde, ça fausse les résultats et au final, tu risques de te retrouver avec plus de problèmes.

                  Mais bon, si tu veux vraiment le faire (tu es conscient des risques maintenant), tu vas devoir utiliser une requête de type INSERT INTO ... SELECT avec EXCEPT. Sauf que pour faire ceci, il faut savoir quels étudiants ont une note et apparemment, selon la structure de ta table, ce n'est pas possible de savoir quelle note appartient à quel étudiant...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 septembre 2010 à 16:59:34

                    Par note nulle, j'veux dire egale à zéro et il ne s'agit pas d'un "null". Il signifie pour moi qu'il n'y a pas de note.

                    Et comme je l'ai dit, je prends pas en consideration le "0".

                    Désolée de ne pas avoir été très claire.

                    Le problème réside à trouver quels sont les "Nom" manquants et chez quels "ID".
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 septembre 2010 à 17:05:25

                      C'est ça le problème. 0 n'est pas égal à NULL, c'est différent. Et je ne comprends définitivement pas pourquoi tu ne prendrais pas en considération le 0, un élève n'a pas le droit d'avoir 0 ?

                      Pourrais-tu nous donner la requête CREATE TABLE qui t'a permise de créer tes tables ? Tu peux accéder à cette requête en exécutant SHOW CREATE TABLE ta_table .
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 septembre 2010 à 17:45:25

                        Excusez-moi, je n'ai fait que donner un exemple (qui ressemble) pour expliquer mon problème.
                        En fait, il ne s'agit pas exactement du (eleve, note, module) -j'ai changé les noms seulement-. Les notes varient de 1 à 5, c'est pour celà que j'ai viré le 0 de mes calculs. Mais là, je dois calculer des similarités, et les tableaux doivent être de la même dimension.

                        Et j'utilise la commande SQL*PLUS d'Oracle.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 septembre 2010 à 17:53:50

                          Est-ce que t'as tout de même un moyen de nous passer la structure de tes tables ? C'est difficile de t'aider dans les circonstances, on ne connait pas la table qui contient les étudiants et on ne sait pas quelles colonnes utiliser pour faire les jointures.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 septembre 2010 à 18:49:19

                            table1 (id, nom, note) (clé= id)
                            table2 (prof, nom) (clé = prof, nom)

                            Edit: J'ai fini par trouver.

                            Solution

                            INSERT INTO table1
                             SELECT distinct ID ,   'nom1' ,    0
                             FROM table1
                             WHERE ID NOT IN
                                 (SELECT ID FROM table1 WHERE nom=  'nom1'   ) ;
                            


                            (Merci d'avoir répondu).
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Rajouter les lignes manquantes

                            × 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