logo  
 
Translation :
 
   
 
Menu général :
 
   
 
Espace Membre :
 
 
Privé Se connecter


Se souvenir de moi ?


Mot de passe oublié

 
 
Liens Web :
 
   
 
Forum : Masquer l’entête
 
 
Accès rapide :

Effectuer une Recherche avancée OU


 
 
Doublon dans la table ressources_groupes_etudiants  [10 réponses]
 
 


 
 
 
 
 
 
 
 
 
CCRI
starsj3.png
Habitué


avatar
Hors ligne

Nombre de posts: 139
Inscrit(e) le: 04 février 2016
Imprimer jeudi 9 septembre 2021 à 09:43  

Bonjour Sylvain, Bonjour à tous,

Nous avons été contacté par des étudiants qui nous ont indiqué que leur fichier ICS contenait des cours en double, en triple, en quadruple.
Nous utilisons les scripts que Bruno avait mis en place avec l'interface web qu'il a développé.

En regardant en détail, on s'aperçoit que dans la table ressources_groupes_etudiants, on a plusieurs fois les mêmes groupes pour un étudiant donné.

image

Temporairement, nous avons corrigé le problème en modifiant la requête qui crée les fichiers ICS, pour récupérer les groupes des étudiants (SELECT DISTINCT).

image

Est-ce que certain(e)s d'entre vous ont aussi ce souci de doublon dans la table ressources_groupes_etudiants ?

Merci et bon courage.


Olivier et Benoît
IUT Orsay



 
 
 
 
 
 
Ψmillion
Administrateur
stars7.png
Dieu Supreme


avatar
Hors ligne

Nombre de posts: 1448
Inscrit(e) le: 1er janvier 2008
Imprimer Permalien jeudi 9 septembre 2021 à 14:31  

Bonjour
J'ai regardé dans ma base de données et j'ai également plein de doublons dans cette table. Je viens de faire le grand ménage. Maintenant, le plus dur est de trouver l'origine de ce problème...
Bonne journée
Bruno



Visiter son site


 
 
 
 
 
 
fperciot
starsj4.png
Posteur fou


avatar
Hors ligne

Nombre de posts: 158
Inscrit(e) le: 08 septembre 2016
Imprimer Permalien dimanche 12 septembre 2021 à 12:18  

Hello,
Je viens de regarder dans ma base, mais (sans avoir balayé de manière exhaustive cette table), j'ai des doublons mais qui correspondent à arborescence de mes groupes :
- groupe1 avec étudiant 1
- sous-groupe11 avec étudiant 1
- sous-sous-groupe111 avec étudiant 1
- sous-sous-sous-groupe1111 avec étudiant 1

et dans la table je retrouve ce pyramidage avec les lignes suivantes dans la table :
- code de l'étudiant 1 avec le code du groupe 1
- code de l'étudiant 1 avec le code du sous-groupe 11
- code de l'étudiant 1 avec le code du sous-sous-groupe 111
- code de l'étudiant 1 avec le code du sous-sous-groupe 1111

Ceci correspond à l'exemple des images ci-dessous :

image

image

Je retrouve bien 4 lignes dans la table qui correspondent aux 4 niveaux arborescence des groupes dans VT (à moins que je n'ai pas bien compris le fonctionnement).

Ceci étant, je n'utilise en Prod que la version 08-04-2021 et je n'ai pas encore fait le test avec la dernière version de juillet de Sylvain

Si cela peut aider ...

Édité 1 fois - Dernière édition: 12/09/2021 à 12:37 Par fperciot.


Florent P.



 
 
 
 
 
 
Ψsylvain
Administrateur
stars7.png
Dieu Supreme


avatar
Hors ligne

Nombre de posts: 1905
Inscrit(e) le: 20 novembre 2004
Imprimer Permalien dimanche 12 septembre 2021 à 19:36  

Bonjour à tous,

Tu as raison, Florent, dans VT l'appartenance d'un étudiant à un groupe se fait sur toute la hiérarchie des groupes? Dans ton exemple, c'est donc tout à fait norma de voir les 4 lignes.

Cependant, le pb qui est soulevé ici est que l'appartenance d'un étudiant est enregistrée plusieurs fois.
Coté VT cela n'a aucune conséquence. Mais ce n'est pas normal.
C'est gênant avec l'application web de diffusion des edt.

Ce pb est connu depuis pas mal de temps mais très difficile à localiser ... je cherche encore ...

Sylvain


visual timetabler


E-mail Anti-spam


 
 
 
 
 
 
Ψmillion
Administrateur
stars7.png
Dieu Supreme


avatar
Hors ligne

Nombre de posts: 1448
Inscrit(e) le: 1er janvier 2008
Imprimer Permalien dimanche 12 septembre 2021 à 19:54  

Bonjour
Voici une requête qui permet de lister les doublons :
select count(*) as nbr_doublon, `codeEtudiant`,`codeGroupe` from ressources_groupes_etudiants where deleted=0 group by `codeEtudiant`,`codeGroupe` having count(*)>1

Bonne fin de wek-end
Bruno



Visiter son site


 
 
 
 
 
 
Ψsylvain
Administrateur
stars7.png
Dieu Supreme


avatar
Hors ligne

Nombre de posts: 1905
Inscrit(e) le: 20 novembre 2004
Imprimer Permalien lundi 13 septembre 2021 à 04:43  

Bonjour,

Bruno et Benoit, ce qui est étrange dans votre table est que toutes les lignes ont la même date de modification et la même date de création.
L'affectation des étudiants aux groupes s'est-elle faite par VT (via les interfaces utilisateurs) ou par un autre moyen (importation) ?

Merci

Édité 1 fois - Dernière édition: 13/09/2021 à 06:31 Par sylvain.


visual timetabler


E-mail Anti-spam


 
 
 
 
 
 
fperciot
starsj4.png
Posteur fou


avatar
Hors ligne

Nombre de posts: 158
Inscrit(e) le: 08 septembre 2016
Imprimer Permalien lundi 13 septembre 2021 à 10:43  

A l'aide de la requête de Bruno (merci à lui), j'ai trouvé une 20aine d'étudiants "à problème" avec une 40aines de lignes à positionner à delete=1.
Ceci étant corrigé, pour moi, les dates de modification ne sont ni les mêmes ni les mêmes propriétaires.
Cela ressemble étrangement à un problème de perte de connexion entre VT_reseau et la BdD (où VT_reseau synchroniserait plusieurs fois.
Mais ce n'est qu'une hypothèse


Florent P.



 
 
 
 
 
 
Ψmillion
Administrateur
stars7.png
Dieu Supreme


avatar
Hors ligne

Nombre de posts: 1448
Inscrit(e) le: 1er janvier 2008
Imprimer Permalien lundi 13 septembre 2021 à 15:15  

Bonjour
Moi, je crée tous mes étudiants via VT (à la main ou via l'import avec le fichier csv).
Je les affecte aux groupes aussi via VT en passant par groupes-->ajouter modifier détruire. Je ne le fais pas directement lors de l'import car ça merdouille souvent avec le # donc j'ai abandonné cette solution il y a plusieurs années.
Pour les dates, je ne sais pas car j'ai supprimé les lignes en doublon.



Visiter son site


 
 
 
 
 
 
CCRI
starsj3.png
Habitué


avatar
Hors ligne

Nombre de posts: 139
Inscrit(e) le: 04 février 2016
Imprimer Permalien mardi 14 septembre 2021 à 11:05  

Bonjour Sylvain, Bonjour à tous,

De notre côté, les étudiants sont importés via fichier .CSV.
Néanmoins, il arrive que certains étudiants soient ajoutés à la main dans VT.

Au vu de la date de création / modification, je suis presque sûr que c'est un import via fichier CSV.

Bonne journée et bon courage.


Olivier et Benoît
IUT Orsay



 
 
 
 
 
 
Ψsylvain
Administrateur
stars7.png
Dieu Supreme


avatar
Hors ligne

Nombre de posts: 1905
Inscrit(e) le: 20 novembre 2004
Imprimer Permalien samedi 2 octobre 2021 à 12:03  

Bonjour,

Je poursuis mes investigations.

Ce qui est étrange c'est que les doublons ne soient présents que dans cette table de mon coté.

Et du vôtre ?




Bonjour,

Ce n'est pas une correction du pb : je n'ai toujours pas pu pointer l'origine de ces doublons.
En attendant, je propose des "gardes fou" dans la base.
Lorsqu'on essaie d'ajouter un lien dans la table ressources_groupes_etudiants, le "trigger" s'assure que ce lien n'est pas déjà présent.
Afin de surveiller ce qu'il se passe, un message d'erreur est stocké dans une table que j'appelle "erreurs".

Voici les scripts :

DROP TABLE IF EXISTS `erreurs`;
CREATE TABLE `erreurs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dateModif` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`erreur` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

DROP TRIGGER IF EXISTS `unicite_appartenance_groupe`;

CREATE TRIGGER `unicite_appartenance_groupe`
BEFORE INSERT
ON `ressources_groupes_etudiants`
FOR EACH ROW BEGIN
IF EXISTS (
SELECT *
FROM ressources_groupes_etudiants
WHERE ressources_groupes_etudiants.deleted = 0 AND ressources_groupes_etudiants.codeGroupe = NEW.codeGroupe AND ressources_groupes_etudiants.codeEtudiant = NEW.codeEtudiant
)
THEN INSERT INTO erreurs (erreur) VALUES ( CONCAT(
'Erreur [',
CONVERT(NEW.codeProprietaire,CHAR),
']: tentative d ajout de l etudiant (', CONVERT(NEW.codeEtudiant,CHAR), ' smiley sg3bgg29g.gif dans le groupe ', CONVERT(NEW.codeGroupe,CHAR),' smiley sg3bgg29g.gif . Ce lien existe déjà.' smiley sg3bgg29g.gif );
END IF;
END;

J'ai également ajouté une surveillance sur les dates des séances et des réservations.
Chez nous on a parfois une date 0000-00-00 qui entraine des erreurs.
Voici les scripts :

CREATE TRIGGER `dates_seances`
BEFORE INSERT
ON `seances`
FOR EACH ROW BEGIN
IF EXISTS (
SELECT *
FROM `seances`
WHERE NEW.dateSeance = '0000-00-00'
)
THEN INSERT INTO erreurs (erreur) VALUES ( CONCAT( 'Erreur [', CONVERT(NEW.codeProprietaire,CHAR), ']: tentative d utilisation de la date 0000-00-00 dans une seance.' smiley sg3bgg29g.gif );
END IF;
END;

DROP TRIGGER IF EXISTS `dates_reservations`;

CREATE TRIGGER `dates_reservations`
BEFORE INSERT
ON `reservations`
FOR EACH ROW BEGIN
IF EXISTS (
SELECT *
FROM `seances`
WHERE NEW.dateReservation = '0000-00-00'
)
THEN INSERT INTO erreurs (erreur) VALUES ( CONCAT( 'Erreur [', CONVERT(NEW.codeProprietaire,CHAR), ']: tentative d utilisation de la date 0000-00-00 dans une reservation.' smiley sg3bgg29g.gif );
END IF;
END;

Sylvain


visual timetabler


E-mail Anti-spam


 
 
 
 
 
 
fperciot
starsj4.png
Posteur fou


avatar
Hors ligne

Nombre de posts: 158
Inscrit(e) le: 08 septembre 2016
Imprimer Permalien samedi 2 octobre 2021 à 18:02  

Bonjour Sylvain,
Pourrais-tu nous mettre le code dans un format différent car les smileys perturbent le code (je suppose de manière automatique).
Merci d'avance,




Après quelques recherches, j'ai trouvé comment remplacer les smileys mais aussi jouer avec les DELIMITER dans MySQL (pour que mon serveur de BdD accepte les TRIGGERS de Sylvain).

Voici le code, si cela peut servir :



Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
  1. <?php  
  2. #####!!!#####
  3.  
  4. DROP TABLE IF EXISTS `erreurs`;
  5. CREATE TABLE `erreurs` (
  6.   `id` int(11) NOT NULL AUTO_INCREMENT,
  7.   `dateModif` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  8.   `erreur` varchar(255) NOT NULL DEFAULT '',
  9.   PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
  11.  
  12. DROP TRIGGER IF EXISTS `unicite_appartenance_groupe`;
  13.  
  14. DELIMITER |
  15. CREATE TRIGGER `unicite_appartenance_groupe`
  16. BEFORE INSERT ON `ressources_groupes_etudiants`
  17. FOR EACH ROW BEGIN
  18. IF EXISTS (
  19.     SELECT * 
  20.     FROM ressources_groupes_etudiants
  21.     WHERE ressources_groupes_etudiants.deleted = 0 AND ressources_groupes_etudiants.codeGroupe = NEW.codeGroupe AND  ressources_groupes_etudiants.codeEtudiant = NEW.codeEtudiant
  22.     )
  23. THEN INSERT INTO erreurs (erreur) VALUES ( CONCAT('Erreur [',CONVERT(NEW.codeProprietaire,CHAR),']: tentative d ajout de l etudiant ',CONVERT(NEW.codeEtudiant,CHAR),' dans le groupe ',CONVERT(NEW.codeGroupe,CHAR),'). Ce lien existe déjà.'));
  24. END IF;
  25. END |
  26. DELIMITER ;
  27.  
  28.  
  29.  
  30. DROP TRIGGER IF EXISTS `dates_seances`;
  31.  
  32. DELIMITER |
  33. CREATE TRIGGER `dates_seances`
  34. BEFORE INSERT
  35. ON `seances`
  36. FOR EACH ROW BEGIN
  37. IF EXISTS (
  38.     SELECT * 
  39.     FROM `seances`
  40.     WHERE NEW.dateSeance = '0000-00-00'
  41.     )
  42. THEN INSERT INTO erreurs (erreur) VALUES ( CONCAT( 'Erreur [', CONVERT(NEW.codeProprietaire,CHAR), ']: tentative d utilisation de la date 0000-00-00 dans une seance.'));
  43. END IF;
  44. END|
  45. DELIMITER ;
  46.  
  47.  
  48. DROP TRIGGER IF EXISTS `dates_reservations`;
  49.  
  50. DELIMITER |
  51. CREATE TRIGGER `dates_reservations`
  52. BEFORE INSERT
  53. ON `reservations`
  54. FOR EACH ROW BEGIN
  55. IF EXISTS (
  56.     SELECT * 
  57.     FROM `seances`
  58.     WHERE NEW.dateReservation = '0000-00-00'
  59.     )
  60. THEN INSERT INTO erreurs (erreur) VALUES ( CONCAT( 'Erreur [', CONVERT(NEW.codeProprietaire,CHAR), ']: tentative d utilisation de la date 0000-00-00 dans une reservation.'));
  61. END IF;
  62. END|
  63. DELIMITER ;
  64.  
  65.  
  66. #####!!!#####
  67. ?>
Édité 1 fois - Dernière édition: 02/10/2021 à 18:03 Par fperciot.


Florent P.



 
 
 
 
Doublon dans la table ressources_groupes_etudiants  [10 réponses]