-- Voici le contexte minimal
CREATE TABLE `CLIENT` (
`ID_CLIENT` int(11) NOT NULL,
`POINT_FIDELITE` int(11),
PRIMARY KEY (`ID_CLIENT`)
);
CREATE TABLE `ACHAT` (
`ID_ACHAT` int(11) NOT NULL,
`ID_CLIENT` int(11) NOT NULL,
`ACHAT_VALIDE` datetime,
PRIMARY KEY (`ID_ACHAT`)
);
-- Initialisation `CLIENT`:
INSERT INTO `CLIENT` (`ID_CLIENT`, `POINT_FIDELITE`) VALUES
(1, 0),(2, 0);
-- Initialisation `ACHAT`:
INSERT INTO `ACHAT` (`ID_ACHAT` ,`ID_CLIENT` ,`ACHAT_VALIDE` )
VALUES ('1', '1', NULL), ('2', '1', NULL),
('3', '2', NULL ), ('4', '2', NULL ), ('5', '2', NULL);
-- Je souhaite avec un minimum de requete (une si possible):
-- assigner NOW() à tous les `ACHAT_VALIDE` sans date (IS NULL)
-- ajouter à `POINT_FIDELITE` le Nb des `ACHAT_VALIDE` qui seront assigné à NOW()
-- Je bloque, voici la requete qui ne marche pas (erreur de syntaxe):
UPDATE `CLIENT`, `ACHAT` SET `ACHAT_VALIDE`=NOW(), `POINT_FIDELITE`=`POINT_FIDELITE`+(
-- Que mettre ici pour compter le nombre d'achat qui vont être validé à NOW() ?
-- j'ai une erreur de syntaxe avec ceci :
-- SELECT COUNT(*) WHERE
--`CLIENT`.`ID_CLIENT`=`ACHAT`.`ID_CLIENT` AND
--`ACHAT`.`ACHAT_VALIDE` IS NULL
)
WHERE
`CLIENT`.`ID_CLIENT`=`ACHAT`.`ID_CLIENT` AND
`ACHAT`.`ACHAT_VALIDE` IS NULL
Partager