Page 1 sur 1

create temporary table et update

Posté : 20 janv. 2010, 13:56
par Cypher_PHP
Bonjour

J'ai un problème avec la requête sql. je voulais mettre à jour le champ manquant "login" de la même table à partir d'un champ "pass".
Je vous remercie beaucoup de vos réponses.
exemple:

DROP TABLE IF EXISTS `tmp`;
CREATE TABLE IF NOT EXISTS `tmp` (
  `login` varchar(50) DEFAULT NULL,
  `pass` varchar(50) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

UPDATE tmp SET login=(
SELECT * FROM login
WHERE pass="1234"
)

Le message affiche :
#1241 - Operand should contain 1 column(s)
Résultat
| login | pass|
| cyphos | 1234|
| dentre | htr|
| (vide)| 1234|
Info:
J'utilise EasyPhp 5.3.

Re: create temporary table et update

Posté : 21 janv. 2010, 11:11
par Cypher_PHP
coucou?

Il y a une solution?
Merci

Re: create temporary table et update

Posté : 29 janv. 2010, 11:00
par Antjac
C'est très simple,
La partie
UPDATE tmp SET login=(
SELECT * FROM login
WHERE pass="1234"
est une hérésie.

Essaye plutot
UPDATE tmp SET login=(
SELECT login FROM login
WHERE pass="1234"
mais bon, c'est foireux comme système, suffit qu'il y ai deux utilisateurs ayant le même mot de passe pour faire planter ta requête.

En effet, quand tu fais une affectation avec une sous requête tu dois renvoyer qu'un seul résultat et une seule colonne.