Ajouter des enregistrements en évitant les doublons
Résolu
coxycross
Messages postés
788
Date d'inscription
Statut
Membre
Dernière intervention
-
coxycross Messages postés 788 Date d'inscription Statut Membre Dernière intervention -
coxycross Messages postés 788 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai besoin d'un coup de main en MySQL, j'ai une base de données, dans laquelle j'ai des personnes d'enregistrées, et elles ont chacune un numero unique.
J'ai un fichier .csv que je lis puis j'ajoute le contenu dans ma BDD, cependant, dans ce fichier, j'ai des personnes qui sont déjà présentes dans ma base, donc elles ne doivent pas être ajoutées.
Sauf que je ne sais pas, avec une requête MySQL, éviter les doublons.
En gros, dans mon fichier csv j'ai le nom - prenom - numero pour chaque personne.
Dans ma base de données j'ai la meme chose, mais si le numero de la personne (et seulement le numero) est déjà présent dans ma base de donées, la personne n'est pas ajoutée.
Je ne sais pas comment faire cela, j'essaye avec un truc de ce genre là :
Tout ce qui est en gras est la partie que je ne sais pas rédiger, je ne comprends pas comment marche de NOT EXIST. Peut etre existe-t-il une autre méthode ?
Cordialement
Coxycross
J'ai besoin d'un coup de main en MySQL, j'ai une base de données, dans laquelle j'ai des personnes d'enregistrées, et elles ont chacune un numero unique.
J'ai un fichier .csv que je lis puis j'ajoute le contenu dans ma BDD, cependant, dans ce fichier, j'ai des personnes qui sont déjà présentes dans ma base, donc elles ne doivent pas être ajoutées.
Sauf que je ne sais pas, avec une requête MySQL, éviter les doublons.
En gros, dans mon fichier csv j'ai le nom - prenom - numero pour chaque personne.
Dans ma base de données j'ai la meme chose, mais si le numero de la personne (et seulement le numero) est déjà présent dans ma base de donées, la personne n'est pas ajoutée.
Je ne sais pas comment faire cela, j'essaye avec un truc de ce genre là :
RAjoutMasse = "INSERT INTO eleves(Nom,Prenom,Classe,NumCarte) VALUES ('" + Nom[i] + "','" + Prenom[i] + "','" + Classe[i] + "', '" + NumCarte[i] + "')WHERE NOT EXISTS (SELECT * FROM 'table' WHERE value1='stuff for value1' AND value2='stuff for value2')";
Tout ce qui est en gras est la partie que je ne sais pas rédiger, je ne comprends pas comment marche de NOT EXIST. Peut etre existe-t-il une autre méthode ?
Cordialement
Coxycross
A voir également:
- Ajouter des enregistrements en évitant les doublons
- Doublons photos - Guide
- Supprimer les doublons excel - Guide
- Ajouter liste déroulante excel - Guide
- Ajouter signature word - Guide
- Impossible d'ajouter un ami sur facebook - Guide
8 réponses
coxycross
Messages postés
788
Date d'inscription
Statut
Membre
Dernière intervention
110
Salut, et merci de ta réponse. Je ne suis pas très familier avec le MySQL, et les BDD en général d'ailleurs. Comment marche cet index UNIQUE ?
Exactement tu édite la structure de la table, le champ unique interdit l'insertion d'un nouvel enregistrement si ce champ existe déjà dans la table.
Le plus simple essaies de faire un insert avec un numéro déjà existant et regarde ce qu'il se passe!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Donc, pour le moment ça ne fonctionne pas, j'ai mis mon champ NumCarte en UNIQUE, et j'utilise la requete ci dessous pour remplir ma BDD. Sauf que j'ai encore des doublons :
RPassageAnnee = "INSERT INTO eleves(Nom,Prenom,Classe,NumCarte) VALUES ('" + Nom[i] + "','" + Prenom[i] + "','" + Classe[i] + "', '" + NumCarte[i] + "')";
Hum bizarre bizarre, parce que lorsque je met un champ unique (pour mon exemple idcompteur) sur une table et que j'essaie de faire un insert d'une valeur déjà existante :
Mysql me répond :
Erreur #1062 - Duplicate entry '1' for key 'idcompteur'
=> pas d'insert
Lorsque tu as cliqué sur UNIQUE dans la structure de la table, mysql ne t'as pas renvoyé d'erreur?
De base tu avais des doublons dans ta table?
INSERT INTO 'bddaccess'.'testunique' ( 'idcompteur' , 'champ1' , 'champ2' ) VALUES ( '1', '1', '1' )
Mysql me répond :
Erreur #1062 - Duplicate entry '1' for key 'idcompteur'
=> pas d'insert
Lorsque tu as cliqué sur UNIQUE dans la structure de la table, mysql ne t'as pas renvoyé d'erreur?
De base tu avais des doublons dans ta table?
Lorsque je clique sur UNIQUE dans la structure de ma table, voila très exactement ce qu'il se passe
https://www.casimages.com/i/130222051747391985.jpg.html
Aucune erreur, ou quoi que ce soit. Mais je peux tout de meme avoir des doublons de NumCarte
https://www.casimages.com/i/130222051747391985.jpg.html
Aucune erreur, ou quoi que ce soit. Mais je peux tout de meme avoir des doublons de NumCarte
Regarde bien au-dessus de ta requête il y a écrit :
#1062 - Duplicata du champ '0' pour la clef "NumCarte"
donc le alter table n'est pas pris en compte, il faut d'abord supprimer les doublons présent dans la table , et ensuite cliqué sur unique pour effectuer le alter table
#1062 - Duplicata du champ '0' pour la clef "NumCarte"
donc le alter table n'est pas pris en compte, il faut d'abord supprimer les doublons présent dans la table , et ensuite cliqué sur unique pour effectuer le alter table