doublon qui surgit hors de la nuit :s

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : doublon qui surgit hors de la nuit :s

par Cyrano » 01 févr. 2006, 16:43

[Résolu] :?:

par Invité » 01 févr. 2006, 16:09

effectivement je viens de voir l'erreur !!!!

merci de l'aide

par Cyrano » 01 févr. 2006, 16:02

J'ai pourtant pas écrit ce code :

Code : Tout sélectionner

PRIMARY KEY (`CODE_AGENT`,`CODE_SSERV`)
Je n'y vois que deux champs composant ta clé primaire, pas trois.

par st0nky » 01 févr. 2006, 12:54

si je suis le résonnement que j'ai voulu entreprendre

un agent peut faire partie de la direction (sous service) de la direction générale

et peut aussi faire partie de la direction des service du personnel

ce qui justifie :

Code : Tout sélectionner

INSERT INTO faire_partie values (1,1,2,'Attachée d''administration'); INSERT INTO faire_partie values (1,2,2,'Attachée d''administration');
1,1,2 ==> agent 1 dans la direction de la direction général et a pour poste "attaché d'administration"

1,2,2 ==> agent 1 dans la direction mais cette fois dans le service du personnel en tant q"attaché d'administration" !!

je crois que je ne peut pas être plus claire quand au soucis du doublon que je ne comprend toujours pas !! :s:s

par Invité » 01 févr. 2006, 12:49

la ou je t'arrête c'est qu'il y a 3 clés primaire composite :

code_agent + code_sserv + code_service (via la table faire_partie)

tu vois ??

donc étant donné cela, je continuer d'affirmer que je ne comprend pas !!! :s

par Cyrano » 01 févr. 2006, 10:29

Tu as dans cette table une clé primaire composite, donc chaque élémet de cette clé peut être résent à plusieurs exemplaires, mais la combinaison des deux doit être unique :

Ta clé est composée des champs `CODE_AGENT` + `CODE_SSERV` :
Or dans tes requêtes d'insertion, tu as les lignes 2 et 3 qui présentent la même combinaison de clés : "2" pour `CODE_AGENT` et "1" pour `CODE_SSERV` : la combinaison "2-1" étant déjà présente une fois lors de la seconde insertion, tu ne peux plus l'utiliser pour une nouvelles insertion, et c'est pourtant le cas avec la troisième insertion.

doublon qui surgit hors de la nuit :s

par st0nky » 01 févr. 2006, 10:09

Bonjour,

je m'explique de ce pas :

je gère un annuaire téléphonique et dans mon MCD j'ai 3 entité qui sont relié à une association (une ternaire quoi) !! j'en vien à mon probleme

voici la structure de mes tables :

Code : Tout sélectionner

CREATE TABLE `agent` ( `CODE_AGENT` int(5) NOT NULL auto_increment, `CODE_CIV` int(2) default '0', `NOM_AGENT` varchar(128) default NULL, `PRENOM_AGENT` varchar(128) default NULL, `TEL_AGENT` varchar(30) default NULL, `BIP_AGENT` int(5) default NULL, `MAIL_AGENT` varchar(128) default NULL, PRIMARY KEY (`CODE_AGENT`), KEY `I_FK_AGENT_CIVILITÉ` (`CODE_CIV`) ) TYPE=MyISAM AUTO_INCREMENT=223 CREATE TABLE `service` ( `CODE_SERVICE` int(4) NOT NULL auto_increment, `CODE_DEPARTEMENT` int(3) NOT NULL default '0', `LIB_SERVICE` varchar(128) NOT NULL default '', PRIMARY KEY (`CODE_SERVICE`), KEY `I_FK_SERVICE_DEPARTEMENT` (`CODE_DEPARTEMENT`) ) TYPE=MyISAM AUTO_INCREMENT=21 ; CREATE TABLE `sous_service` ( `CODE_SSERV` int(4) NOT NULL auto_increment, `LIB_SSERV` varchar(128) NOT NULL default '', PRIMARY KEY (`CODE_SSERV`) ) TYPE=MyISAM AUTO_INCREMENT=134 ; et la ternaire : CREATE TABLE `faire_partie` ( `CODE_SSERV` int(4) NOT NULL default '0', `CODE_SERVICE` int(4) NOT NULL default '0', `CODE_AGENT` int(5) NOT NULL default '0', `poste` varchar(200) NOT NULL default '', PRIMARY KEY (`CODE_AGENT`,`CODE_SSERV`), KEY `I_FK_FAIRE_PARTIE_AGENT` (`CODE_AGENT`), KEY `I_FK_FAIRE_PARTIE_SOUS_SERVICE` (`CODE_SSERV`), KEY `I_FK_FAIRE_PARTIE_SERVICE` (`CODE_SERVICE`) ) TYPE=MyISAM;
en quelque mot un agent peut faire partie d'un ou plusieur sous service qui lui meme peut faire partie de un ou plusieurs services donc mes infos de la table faire partie ressemble a :

Code : Tout sélectionner

INSERT INTO faire_partie values (1,1,1,'Directeur'); INSERT INTO faire_partie values (1,1,2,'Attachée d''administration'); INSERT INTO faire_partie values (1,2,2,'Attachée d''administration'); INSERT INTO faire_partie values (1,2,3,'Directeur Adjoint');
pour commenter le premier l'agent 1 fais parti du sous service numéro 1 appartenant au service numéro 1 et cette agent est directeur (jusque la pas de problème)

SAUF que fais incompréhensible si j'insère les 3 premier la il m'indique ce message d'erreur :

Code : Tout sélectionner

#1062 - Duplicata du champ '2-1' pour la clef 1
ce que je ne comprend manifestement pas car les clés primaires de la table faire_partie ne sont pas 3 fois les même !!

donc si quelqu'un savait ce qu'il se passe !!!

merci

cordialement

st0nky