Bonjour,
Je vous présent mon problème à l'aide d'un exemple concret. C'est en fait un horaire de train. J'ai 3 tables.
Ces tables sont remplies de manière suivante :Table Train
=========
idTrain
nomTrain
Table HeureDepart
=================
idHeureDepart
heureDepart
Table Ligne (intermédiaire entre les 2)
===========
nomLigne
train_idTrain
heureDepart_idHeureDepart
Ce qui signifie que le Train1 fait la Ligne1 avec les HeureDepart(10:00 et 12:00) et les Train2 fait la Ligne2 avec les HeureDepart(11:00 et 13:00).Train
===
1->Train1
2->Train2
3->TrainTemporaire
HeureDepart
===========
1->10:00
2->11:00
3->12:00
4->13:00
Ligne
=====
Ligne1->1->1
Ligne1->1->3
Ligne2->2->2
Ligne2->2->4
Ce que je souhaite c'est pouvoir en quelque requetes, allouer une nouvelle ligne à un train. Ce que je fais c'est que j'utilise un train temporaire (3->TrainTemporaire).
Action 1 : Allouer la Ligne2 au Train1
Ce qui me donne le résultat suivante (table Ligne)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //Je met le TrainTemporaire a la ligne actuelle du Train1 UPDATE Ligne SET train_idTrain=3 WHERE train_idTrain=1 //Je met le Train1 a la place du Train2 UPDATE Ligne SET train_idTrain=1 WHERE train_idTrain=2
Si maintenant le Train2 prend la Ligne1 cela fonctionne parfaitement! Mais si le Train1 reprend la Ligne1, les deux lignes seront alloué au Train1 et ca c'est Faux !Ligne
=====
Ligne1->3->1
Ligne1->3->3
Ligne2->1->2
Ligne2->1->4
Cela retourne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 //Je met le TrainTemporaire a la ligne actuelle du Train1 UPDATE Ligne SET train_idTrain=3 WHERE train_idTrain=1 //ca met des 3 partout UPDATE Ligne SET train_idTrain=1 WHERE train_idTrain=3 //tous les 3 sont updaté en 1
Et je souhaite obtenir le résultat suivant :Ligne
=====
Ligne1->1->1
Ligne1->1->3
Ligne2->1->2
Ligne2->1->4
J'espère avoir été clair et je reste à disposition en cas de questionsLigne
=====
Ligne1->1->1
Ligne1->1->3
Ligne2->3->2
Ligne2->3->4
Merci d'avance pour votre réponse
Bonne journée
Partager