Bonjour,
je lis des valeurs et selon, je fais soit un insert, soit un update.
En l'occurrence, je dois faire un update sachant que la valeur de la clé primaire de la table est déjà présente, mais qu'une valeur d'une des autres colonnes est différente entre le contenu de la table et les valeurs lues. Le souci est que dans la clause where de la requête, on teste une donnée qui appartient à une autre table, la table courante ne possédant qu'une clé sur cette table.
Voici les 2 tables :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DROP TABLE IF EXISTS `license`; CREATE TABLE `license` ( `sesa` int NOT NULL, `application_key` smallint NOT NULL, `currently_active` tinyint(1) DEFAULT NULL, `activate_date` date DEFAULT NULL, `deactivate_date` date DEFAULT NULL, PRIMARY KEY (`sesa`,`application_key`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 DROP TABLE IF EXISTS `application`; CREATE TABLE `application` ( `application_key` smallint NOT NULL AUTO_INCREMENT, `application_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `platform` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `platform_owner` bigint DEFAULT NULL, `publisher` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`application_key`), UNIQUE KEY `UK_appli_name` (`application_name`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
et le principe de la requête d'update (il s'agit bien d'un principe vu que la table license ne possède pas de colonne application_name et qu'une telle colonne se trouve dans la table application)
Pour faire une requête correcte, il faut peut-être faire une jointure de la table license sur la table application, mais maîtrisant mal le sujet, je ne sais pas rendre la requête correcte. Pouvez-vous m'aider SVP ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $sql=<<<sql7 UPDATE `license` SET currently_active = {$ppp($currently_active)},activate_date ={$ppp($active_date)}, deactivate_date ={$ppp($deactivate_date)} where sesa={$ppp($sesaid)} and application_name = {$ppp($appli_name)} sql7;
Partager