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 19/08/2011, 15h33   #1
Invité régulier
 
Inscription : avril 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 35
Points : 6
Points : 6
Par défaut SELECT qui fonctionne mais pas UPDATE

Bonjour,

Bon mon titre n'est pas très clair, désolé.
En fait, je tente de faire un UPDATE qui, ma foi, était largement facile et aurait dû se réaliser sans problème. Étant donné que ça n'a rien donné, j'ai alors fait un SELECT pour vérifier s'il n'y avait pas d'attributs mal écris ou des trucs comme ça... (J'ai vraiment tenté pas mal de trucs pour que ça fonctionne)

Je vous donne mes structures et mes scripts :

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
25
Structures (simplifiées) : 
commune_test : 
inseecom varchar(11)
arrondissementcom int(1)

comtemp : 
DEP varchar(3)
COM int(3)
AR int(1)



Requêtes : 

Le UPDATE qui ne veut pas fonctionner :
UPDATE `commune_test`, `comtemp`
SET `arrondissementcom` = `AR`
WHERE `inseecom` = CONCAT(`DEP`, LPAD(`COM`, 3, '0'));
-- Pourquoi elle fonctionne pas celle laaaaa !!!!!!

Le SELECT qui, lui, fonctionne :
SELECT inseecom, CONCAT(dep, LPAD(com, 3, '0')), arrondissementcom, ar
FROM gms.commune_test, gms.comtemp
WHERE inseecom = CONCAT(dep, LPAD(com, 3, '0'));
Je précise que quand je dis que mon UPDATE ne veut pas fonctionner, c'est qu'il ne me retourne même pas d'erreur, il tente de faire la requête et si je ne l'arrête pas, il continue de tenter. J'ai même fait le test pour qu'il ne tente de mettre à jour qu'une ou deux valeurs, mais ça donne toujours le même résultat : un petit rond bleu qui tourne sur lui-même en guise de pointeur de souris...

Si quelqu'un pouvait m'aider, ce serait cool, parce que là je vous avoue ne pas comprendre...

Merci !
Kentin64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h45   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Tu as deux noms de table dans ton UPDATE ou je rêve

Syntaxe d'un UPDATE:
Code :
1
2
3
4
5
6
 
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]
Ce qui donnerai plutot:
Code :
1
2
3
4
 
UPDATE `commune_test`
SET `arrondissementcom` = `AR`
WHERE `inseecom` = CONCAT(`DEP`, LPAD(`COM`, 3, '0'));
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h02   #3
Invité régulier
 
Inscription : avril 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 35
Points : 6
Points : 6
Il faut bien que j'aie le nom de la deuxième table pour pouvoir faire ma ("sorte de") jointure et récupérer les valeurs dans cette table.

Bon, pour être plus clair, je dois récupérer les arrondissements (AR) de la table comtemp pour les copier dans la colonne des arrondissements (arrondissementcom) de la table commune_test. Voilà ce que fait mon UPDATE.

J'ai déjà fait de telles requêtes (avec plusieurs noms de table) et ça fonctionnait...
Kentin64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h17   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Votre table n'est elle pas verrouillée ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 09h47   #5
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Bonjour.
Et comme ça :

Code :
1
2
3
4
5
 
UPDATE commune_test cTest 
INNER JOIN  comtemp cTemp ON CONDITION_DE_JOINTURE
SET cTest.arrondissementcom = "AR"
WHERE cTemp.inseecom = CONCAT(`DEP`, LPAD(`COM`, 3, '0'));
A toi de mettre la condition de jointure correcte...
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 11h54   #6
Invité régulier
 
Inscription : avril 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 35
Points : 6
Points : 6
Merci pour vos réponses !

Alors j'ai essayé d'écrire ma requête avec un INNER JOIN. Mais c'est sans résultat (pour l'UPDATE, parce qu'elle marche avec mon SELECT).

Yanika, qu'est-ce que tu veux dire par "table verrouillée" ?
Kentin64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 12h00   #7
Invité régulier
 
Inscription : avril 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 35
Points : 6
Points : 6
Bon, j'ai essayé un truc pas très propre auquel j'avais pensé pendant le week-end... J'ai supprimé ma clé primaire !
Et bien vous n'allez pas me croire mais ça a fonctionné !
Je sais que c'est du gros bidouillage, mais tant pis. En tout cas, je tiens à vous remercier pour votre attention.

A bientôt !
Kentin64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 12h04   #8
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par Kentin64 Voir le message
J'ai supprimé ma clé primaire !
AYEEEEEEEEEEEEEEEEEE

Comme tu veux mais ce n'est pas très propre je trouve
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 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 11h26.


 
 
 
 
Partenaires

Hébergement Web