Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1530 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] UPDATE complexe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] UPDATE complexe

n°749081
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:38:01  profilanswer
 

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
mood
Publicité
Posté le 02-06-2004 à 16:38:01  profilanswer
 

n°749098
ddr555
Posté le 02-06-2004 à 16:43:44  profilanswer
 

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

n°749099
jeromejans​on
Posté le 02-06-2004 à 16:43:59  profilanswer
 

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."

n°749100
ddr555
Posté le 02-06-2004 à 16:45:09  profilanswer
 

grilled :D

n°749101
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:45:18  profilanswer
 

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

n°749102
ddr555
Posté le 02-06-2004 à 16:46:15  profilanswer
 

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

n°749106
ddr555
Posté le 02-06-2004 à 16:47:36  profilanswer
 

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

n°749107
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:47:58  profilanswer
 

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

n°749109
jeromejans​on
Posté le 02-06-2004 à 16:48:32  profilanswer
 

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

n°749112
ddr555
Posté le 02-06-2004 à 16:50:12  profilanswer
 

double grilled, décidement :D

mood
Publicité
Posté le 02-06-2004 à 16:50:12  profilanswer
 

n°749115
jeromejans​on
Posté le 02-06-2004 à 16:51:12  profilanswer
 

ddr555 a écrit :

double grilled, décidement :D


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

n°749116
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:51:50  profilanswer
 

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

n°749118
jeromejans​on
Posté le 02-06-2004 à 16:53:09  profilanswer
 

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?

n°749120
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:54:28  profilanswer
 

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

n°749123
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:56:05  profilanswer
 

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

n°749124
jeromejans​on
Posté le 02-06-2004 à 16:57:03  profilanswer
 

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

n°749125
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 16:57:54  profilanswer
 

Ok, 2 secondes

n°749129
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 17:00:35  profilanswer
 

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')

n°749137
jeromejans​on
Posté le 02-06-2004 à 17:03:39  profilanswer
 

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

n°749139
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 17:05:10  profilanswer
 

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

n°749144
jeromejans​on
Posté le 02-06-2004 à 17:07:21  profilanswer
 

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

n°749146
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 17:08:14  profilanswer
 

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

n°749194
ddr555
Posté le 02-06-2004 à 17:39:43  profilanswer
 

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 ?  :??:

n°749198
la buvette
$í j'ø$âí$
Posté le 02-06-2004 à 17:40:44  profilanswer
 

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

n°750188
Beegee
Posté le 03-06-2004 à 09:59:14  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] UPDATE complexe

 

Sujets relatifs
Recherche correpondance SQL Server / Oracle[C++] Comment se connecter à un serveur SQL via c++
Rafraichissé moi la memoire, requete sql[MYSQL] Update x si il n'y a pas d'enregistrements de x dans y
Énigme avec SQL !![PL/SQL] Problème de transfert de table
Pb de requete sql dans une page php.De Acces à SQL server: problème de requête Helpppppppppppp!!!
[SQL Server] Requete imbriquée et retour des X premiers enregistrementLiaison de données SQL Server - Access + Date Access [resolu]
Plus de sujets relatifs à : [SQL] UPDATE complexe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR