Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/04/2011, 12h04   #1
Membre à l'essai
 
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 20
Points : 20
Par défaut Erreur: You can't specify target table 's1' for update in FROM clause

Bonjour,
j'ai besoin d'aide pour une requète.
Je suis sous mysql 5.1.41

J'ai une table société et une table adresse, certaines sociétés portent le même nom mais ont des adresses différentes, je voudrais changer leur libellé en le concaténant avec la ville.

J'ai tenté cette requête:
Code :
1
2
3
4
5
6
7
UPDATE `societes` s1
SET s1.libel = ( SELECT  concat(s.libel,' / ',Ville) AS nlibel FROM `societes` s, adresses a 
WHERE libel IN
( SELECT libel FROM `societes` GROUP BY libel
HAVING count(libel) >1)
AND  a.id = s.id_adresse AND s1.id = s.id
)
Mais ça affiche l'erreur:
Citation:
You can't specify target table 's1' for update in FROM clause
Quel est le problème ?
yvesA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 23h49   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
Salut, ta requête risque pas de marcher avec ton select dans le set de l'update...
select renvoie un jeu de résultats pas une valeur scalaire (int, varchar, text, etc...)
faudrais que tu mettent les create de tes tables pour voir comment bien faire les choses...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 09h58   #3
Membre à l'essai
 
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 20
Points : 20
Voici les create:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE IF NOT EXISTS `societes` (
  `id` int(11) NOT NULL AUTO_INCREMENT ,
 
  `libel` varchar(64) COLLATE utf8_bin DEFAULT NULL ,
  `id_adresse` int(11) DEFAULT NULL ,
  `siret` varchar(45) COLLATE utf8_bin DEFAULT NULL ,
  `activite` varchar(100) COLLATE utf8_bin DEFAULT NULL ,
  `rcs` varchar(100) COLLATE utf8_bin DEFAULT NULL ,
  `immatriculation` date DEFAULT NULL ,
  `id_nationalite` varchar(3) COLLATE utf8_bin DEFAULT NULL 
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin  AUTO_INCREMENT=81 ;
 
 
CREATE TABLE IF NOT EXISTS `adresses` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `bat` varchar(45) COLLATE utf8_bin DEFAULT NULL ,
  `rue` varchar(255) COLLATE utf8_bin DEFAULT NULL ,
  `complement` varchar(50) COLLATE utf8_bin DEFAULT NULL ,
  `codePostal` varchar(10) COLLATE utf8_bin DEFAULT NULL ,
  `Ville` varchar(45) COLLATE utf8_bin DEFAULT NULL ,
  `date_modif` datetime DEFAULT NULL
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin  AUTO_INCREMENT=16820 ;
yvesA est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h59.


 
 
 
 
Partenaires

Hébergement Web