CREATE TABLE IF NOT EXISTS `fusionax_formations` (
FO CHAR(2) NOT NULL COMMENT 'Vaut toujours FO pour cette table',
ax_id VARCHAR(8) NOT NULL COMMENT 'Id unique de l''ancien',
- Intitule_diplome VARCHAR(255) NOT NULL DEFAULT 0 COMMENT 'Intitulé du diplôme',
Intitule_formation VARCHAR(255) NOT NULL DEFAULT 0 COMMENT 'Intitulé de la formation',
+ Intitule_diplome VARCHAR(255) NOT NULL DEFAULT 0 COMMENT 'Intitulé du diplôme',
Descr_formation VARCHAR(255) NOT NULL COMMENT 'Description de la formation',
pid INT(11) UNSIGNED DEFAULT NULL,
eduid INT(4) DEFAULT NULL,
) ENGINE=InnoDB, CHARSET=utf8;
LOAD DATA LOCAL INFILE '{?}Formations.txt' INTO TABLE fusionax_formations CHARACTER SET utf8 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
-(FO, ax_id, Intitule_diplome, Intitule_formation, Descr_formation);
+(FO, ax_id, Intitule_formation, Intitule_diplome, Descr_formation);
UPDATE fusionax_formations AS f
-INNER JOIN profile_education_enum AS e ON (f.Intitule_diplome = e.abbreviation)
- SET f.Intitule_diplome = e.name
- WHERE f.Intitule_diplome != '';
+INNER JOIN profile_education_enum AS e ON (f.Intitule_formation = e.abbreviation)
+ SET f.Intitule_formation = e.name
+ WHERE f.Intitule_formation != '';
XDB::rawExecute("DELETE FROM fusionax_formations
WHERE Intitule_formation = '' AND Intitule_diplome = '' AND Descr_formation = ''");
// Insert ids into fusionax_formations to prevent many joins.
+XDB::rawExecute('ALTER TABLE profile_education_enum ADD INDEX (name(60))');
+XDB::rawExecute('ALTER TABLE profile_education_degree_enum ADD INDEX (abbreviation(60))');
XDB::rawExecute('UPDATE fusionax_formations AS f
LEFT JOIN profile_education_enum AS pe ON (pe.name = f.Intitule_formation)
LEFT JOIN profile_education_degree_enum AS pd ON (pd.abbreviation = f.Intitule_diplome)
LEFT JOIN profile_education_field_enum AS pf ON (pf.field = f.Descr_formation)
SET f.eduid = pe.id, f.degreeid = pd.id, f.fieldid = pf.id');
+XDB::rawExecute('ALTER TABLE profile_education_enum DROP INDEX name');
+XDB::rawExecute('ALTER TABLE profile_education_degree_enum DROP INDEX abbreviation');
// Updates non complete educations.
XDB::rawExecute("UPDATE profile_education AS e
INNER JOIN fusionax_formations AS f ON (f.pid = e.pid)
FROM fusionax_formations");
XDB::rawExecute("DELETE f
FROM fusionax_formations AS f
- INNER JOIN profile_education AS pe ON (pe.pid = f.pid AND pe.id = $id AND pe.eduid = f.eduid AND pe.degreeid = f.degreeid
- AND pe.fieldid = f.fieldid AND pe.program = f.Descr_formation)");
+ INNER JOIN profile_education AS pe ON (pe.pid = f.pid AND pe.id = $id)
+ WHERE (pe.eduid = f.eduid OR (pe.eduid IS NULL AND f.eduid IS NULL))
+ AND (pe.degreeid = f.degreeid OR (pe.degreeid IS NULL AND f.degreeid IS NULL))
+ AND (pe.fieldid = f.fieldid OR (pe.fieldid IS NULL AND f.fieldid IS NULL))
+ AND (pe.program = f.Descr_formation OR (pe.program IS NULL AND f.Descr_formation IS NULL))");
$continue = XDB::affectedRows();
++$id;
}