[SQL] UPDATE complexe

UPDATE complexe [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 02-06-2004 à 16:38:01    

Bonjour,
Je n'arrive pas à effectuer un UPDATE complexe, je me demande si c'est possible de le faire...
 
J'ai deux tables:
ATELIERS(numat,nom): numat=numéro d'atelier, nom=nom de l'atelier
Utilisateurs(login,mdp,numat,droits): table des utilisateurs, champs explicites...
 
Je veux faire une exécution qui modifie les attributs d'un login:
UPDATE utilisateurs
SET mdp='roscot',droits='5',utilisateurs.numat=ateliers.numat
WHERE login='test'  
AND numat IN (SELECT a.numat FROM ateliers a WHERE a.nom='Direction')

 
Pourquoi ça ne fonctionne pas ?


Message édité par la buvette le 02-06-2004 à 16:45:58
Reply

Marsh Posté le 02-06-2004 à 16:38:01   

Reply

Marsh Posté le 02-06-2004 à 16:43:44    

AND a.numat IN (SELECT a.numat FROM ateliers a WHERE a.nom='Direction')
 
c'est ça qui ne va pas, il faut mettre le nom de la colonne de la table atelier, soit numat tout court :o

Reply

Marsh Posté le 02-06-2004 à 16:43:59    

La Buvette a écrit :

Bonjour,
Je n'arrive pas à effectuer un UPDATE complexe, je me demande si c'est possible de le faire...
 
J'ai deux tables:
ATELIERS(numat,nom): numat=numéro d'atelier, nom=nom de l'atelier
Utilisateurs(login,mdp,numat,droits): table des utilisateurs, champs explicites...
 
Je veux faire une exécution qui modifie les attributs d'un login:
UPDATE utilisateurs
SET mdp='roscot',droits='5',utilisateurs.numat=a.numat
WHERE login='test'  
AND a.numat IN (SELECT a.numat FROM ateliers a WHERE a.nom='Direction')

 
Pourquoi ça ne fonctionne pas ?


 
moi ya deja un truc qui me parait bizarre :
AND a.numat ...
a mon avis il faut pas mettre le "a."

Reply

Marsh Posté le 02-06-2004 à 16:45:09    

grilled :D

Reply

Marsh Posté le 02-06-2004 à 16:45:18    

C'est édité.
Mais ça ne fonctionne toujours pas, je désespère...

Reply

Marsh Posté le 02-06-2004 à 16:46:15    

c'est quoi le message retourné ?
quoi comme base de données ?

Reply

Marsh Posté le 02-06-2004 à 16:47:36    

UPDATE utilisateurs  
SET mdp='roscot',droits='5'
WHERE login='test'  
AND numat IN (SELECT a.numat FROM ateliers a WHERE a.nom='Direction')  
 
c'est mieux comme ça

Reply

Marsh Posté le 02-06-2004 à 16:47:58    

BDD=MySql
Message: Something is wrong in your syntax près de 'SELECT numat FROM ateliers a WHERE a.nom='Direction')' à la ligne 2
 
Pourtant cette requete (SELECT numat...'Direction') fonctionne parfaitement toute seule

Reply

Marsh Posté le 02-06-2004 à 16:48:32    

ddr555 a écrit :

c'est quoi le message retourné ?
quoi comme base de données ?


 
encore un truc???
pkoi tu met ca?? :
utilisateurs.numat=ateliers.numat

Reply

Marsh Posté le 02-06-2004 à 16:50:12    

double grilled, décidement :D

Reply

Marsh Posté le 02-06-2004 à 16:50:12   

Reply

Marsh Posté le 02-06-2004 à 16:51:12    

ddr555 a écrit :

double grilled, décidement :D


 
c vrai que sur ce coup la t bon ;) :p

Reply

Marsh Posté le 02-06-2004 à 16:51:50    

jeromejanson a écrit :

encore un truc???
pkoi tu met ca?? :
utilisateurs.numat=ateliers.numat


Parce que ça se présente comme ça:
_ Ateliers ('1','Direction')
_ Utilisateurs('test','ancienmdp','2','5')
 
Je veux donc faire une jointure entre les numat, qui sont les numéros d'atelier

Reply

Marsh Posté le 02-06-2004 à 16:53:09    

La Buvette a écrit :

Parce que ça se présente comme ça:
_ Ateliers ('1','Direction')
_ Utilisateurs('test','ancienmdp','2','5')
 
Je veux donc faire une jointure entre les numat, qui sont les numéros d'atelier


 
tu veux le modifier ton numero de matiere?

Reply

Marsh Posté le 02-06-2004 à 16:54:28    

Numéro d'atelier.
Oui, c'est exactement ça, pour que utilisateur 'test' passe de l'atelier 2 vers le 1

Reply

Marsh Posté le 02-06-2004 à 16:56:05    

Parce qu'en fait les données viennent d'un formulaire PHP et la variable $atelier est égale au nom d'atelier (en l'occurence 'Direction' pour cet exemple)
Par mesure de simplification j'ai mis pour vous la requete avec 'Direction' mais normalement c'est '$atelier'
 
Voilà pourquoi je cherche à passer par le nom de l'atelier pour changer le numéro d'atelier

Reply

Marsh Posté le 02-06-2004 à 16:57:03    

je suis pas sure d'avoir bien compris depuis le debut
 
tu peux reformuler ton besoin?

Reply

Marsh Posté le 02-06-2004 à 16:57:54    

Ok, 2 secondes

Reply

Marsh Posté le 02-06-2004 à 17:00:35    

J'ai un formulaire PHP.
Il envoi des valeurs pour modifier un utilisateur:
_ $mdp, $login, $droits, $atelier...
Par exemple: $login='test', $mdp='roscot',$droits='5',$atelier='Direction'
 
Le fichier qui reçoit ces valeurs fait une requete pour UPDATEr la table utilisateurs.
 
Mais il faut passer consulter la table Ateliers pour transformer le nom d'atelier (ex: 'Direction') en un numéro d'atelier (numat='1')

Reply

Marsh Posté le 02-06-2004 à 17:03:39    

La Buvette a écrit :

J'ai un formulaire PHP.
Il envoi des valeurs pour modifier un utilisateur:
_ $mdp, $login, $droits, $atelier...
Par exemple: $login='test', $mdp='roscot',$droits='5',$atelier='Direction'
 
Le fichier qui reçoit ces valeurs fait une requete pour UPDATEr la table utilisateurs.
 
Mais il faut passer consulter la table Ateliers pour transformer le nom d'atelier (ex: 'Direction') en un numéro d'atelier (numat='1')


 
ben tu fais une requete avant qui te recupere dans une variable ton umero de matiere
 
et tu l'insere apres dans ton update

Reply

Marsh Posté le 02-06-2004 à 17:05:10    

Je crois que je vais faire ça :)
C'est de la bidouille mais après tout pourquoi pas, très bonne idée

Reply

Marsh Posté le 02-06-2004 à 17:07:21    

sinon essaye un truc du genre :
UPDATE utilisateurs  
SET mdp='roscot',droits='5',numat=(SELECT numat FROM ateliers WHERE nom='Direction')
WHERE login='test'  ;
 
masi je suis pas sur du tout

Reply

Marsh Posté le 02-06-2004 à 17:08:14    

Non [:spamafote]:
Something is wrong in your syntax près de 'SELECT numat FROM ateliers WHERE nom='Direction')  
WHERE login=' à la ligne 2

Reply

Marsh Posté le 02-06-2004 à 17:39:43    

ddr555 a écrit :

UPDATE utilisateurs  
SET mdp='roscot',droits='5'
WHERE login='test'  
AND numat IN (SELECT a.numat FROM ateliers a WHERE a.nom='Direction')  
 
c'est mieux comme ça

t'as essayé ça ?  :??:

Reply

Marsh Posté le 02-06-2004 à 17:40:44    

oui mais:
Something is wrong in your syntax près de 'SELECT a.numat FROM ateliers a WHERE a.nom='Direction')'

Reply

Marsh Posté le 03-06-2004 à 09:59:14    

suivant la version de mySql utilisée, les requête imbriquées (IN, ...) peuvent ne pas être acceptées.
 
A mon avis c'est ça le problème :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed