Bonjour à tous,
Je travaille actuellement sur une application concernant une société exploitant un réseau de bus, j'ai donc une table ligne selon cette structure :
Chaque ligne existe donc à un mois donné (le couple MOIS-ANNEE correspondant à un et seul ID_DATE), ce qui pose le problème suivant : le client doit chaque mois recréer les lignes de bus une par une à travers les formulaires prévus à cet effet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 -- -- Structure de la table `ligne` -- CREATE TABLE IF NOT EXISTS `ligne` ( `ID_LIGNE` int(11) NOT NULL AUTO_INCREMENT, `ID_DATE` int(11) NOT NULL, `NUMERO_LIGNE` varchar(100) NOT NULL, `NOM_LIGNE` varchar(100) NOT NULL, `DISTANCE_FIXE` int(11) DEFAULT NULL, `DISTANCE_SAD_THEORIQUE` int(11) DEFAULT '0', `TX_SAD` float DEFAULT NULL, `DISTANCE_SS_TRAITEE` int(11) DEFAULT '0', `NOMBRE_COURSES_TOTALE` int(11) DEFAULT NULL, PRIMARY KEY (`ID_LIGNE`), UNIQUE KEY `AK_INFOS_LIGNE` (`ID_DATE`,`NUMERO_LIGNE`) ) ENGINE=InnoDB DEF
J'ai donc pensé à la solution suivante pour simplifier le processus : le client choisit un mois et une année, à partir de l'ID_DATE récupéré le système récupère les informations concernant les lignes du mois précédent (ID_DATE - 1) et insére ces données pour le mois choisit.
Exemple : le client choisit de créer les lignes du mois de Septembre 2011, le système récupère les informations des lignes de Août 2011 (le mois précédent) et insère ces donnés pour Septembre 2011.
Je dois donc effectuer une insertion en auto-référence mais je ne comprends pas comment intégrer les where correctement (un pour le SELECT et un pour le INSERT).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT NUMERO_LIGNE, NOM_LIGNE, DISTANCE_FIXE, DISTANCE_SAD_THEORIQUE FROM LIGNE WHERE ID_DATE = ID_DATE_PRECEDENTLe manuel MySQL me laisse penser qu'il faut renommer la table ligne mais je n'ai pas plus d'informations concernant l'utilisation des where et tout ce que j'ai essayé pour l'instant a échoué, je m'en remet donc à vous en espérant avoir été assez explicite !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO LIGNE (NUMERO_LIGNE, NOM_LIGNE, DISTANCE_FIXE, DISTANCE_SAD_THEORIQUE) //le résultat du SELECT ci-dessus FROM LIGNE WHERE ID_DATE = ID_DATE_SELECTIONNE
Merci d'avance !
Partager