Bonjour à tous,
J'ai 3 tables (Municipalités, Stations, MunicipalitésStations).
MunicipalitiesStations : Liste de municipalités (Table optionnelle pour résoudre mon problème)
Stations : Liste de stations
MunicipalitiesStations : Indique quelles stations appartienne à quelle municipalité
J'aimerais supprimer toutes les stations appartemant à une municipalité mais en UNE seule requête.
Voici la description des tables nécessaire :
Moi jusqu'ici la seule requête que j'ai pu trouvé c'est la suivante :
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
18
19
20
21
22
23 CREATE TABLE `municipalities` ( `m_ID` int(11) NOT NULL auto_increment, `m_Name` varchar(100) character set latin1 NOT NULL default '', PRIMARY KEY (`m_ID`), UNIQUE KEY `m_MunicipalityName_UNI` (`m_Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE `municipalitiesstations` ( `ms_StationID` int(11) NOT NULL default '0', `ms_MunicipalityID` int(11) NOT NULL default '0', PRIMARY KEY (`ms_StationID`), KEY `ms_EntityID_IDX` (`ms_MunicipalityID`), CONSTRAINT `municipalitiesstations_ibfk_1` FOREIGN KEY (`ms_StationID`) REFERENCES `stations` (`s_ID`), CONSTRAINT `municipalitiesstations_ibfk_2` FOREIGN KEY (`ms_MunicipalityID`) REFERENCES `municipalities` (`m_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE `stations` ( `s_ID` int(11) NOT NULL auto_increment, `s_Name` varchar(100) character set latin1 NOT NULL default '', default '''Unknow''', PRIMARY KEY (`s_ID`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Mais j'obtiens l'erreur MySQL suivante : 1093 (You can't specify target table 'MunicipalitiesStations' for update in FROM clause). Qui dit que je ne peux pas utiliser la même table en sous requête...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DELETE MunicipalitiesStations.*, Stations.* FROM Stations INNER JOIN MunicipalitiesStations ON s_ID = ms_StationID WHERE MunicipalitiesStations.ms_StationID IN ( SELECT ms_StationID FROM MunicipalitiesStations WHERE ms_MunicipalityID = 9 );
Quelqu'un à une idée de comment pourrais-je procéder ?
Merci
Partager