J'ai deux tables MySql comme indiqué ci-dessous avec les données indiquées:
La meilleure façon d'écrire cette requête
CREATE TABLE `A` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`status` varchar(50) DEFAULT NULL,
`another_field` varchar(50) DEFAULT NULL
)
INSERT INTO `A` VALUES ('1', null, 'a');
INSERT INTO `A` VALUES ('2', null, 'b');
INSERT INTO `A` VALUES ('3', null, 'c');
CREATE TABLE `B` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`status` varchar(50) DEFAULT NULL,
`tableA_id` int(12) DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `B` VALUES ('1', 'aa', '1');
INSERT INTO `B` VALUES ('2', 'aa', '1');
INSERT INTO `B` VALUES ('3', 'aa', '2');
INSERT INTO `B` VALUES ('4', 'aa', '3');
INSERT INTO `B` VALUES ('5', 'bb', '3');
Je veux savoir s'il est possible de mettre à jour A.status si tous sont B.status le même lorsque A.id = B.tableA_id en utilisant une seule requête?
C'est ce que je veux ma table A à ressembler à:
('1', 'aa', 'a') - Statut est mis à jour 'aa' comme B.id 1 & 2 ont la même état et même valeur B.tableA_id.
('2', 'aa', 'b') - Le statut est mis à jour à 'aa' car B.id 3 a le même statut.
('3', null, 'c') - Ceci n'est pas mis à jour car B.id 4 & 5 ont un statut différent et la même valeur table2.table1_id.
Merci
Il vous manque quelques points-virgules dans vos requêtes et une définition de clé primaire sur la table un – Anax
Merci pour pointing..please ignorer toutes les erreurs de syntaxe dans les instructions SQL. – codaddict
bzabhi, Anax a raison. Et les définitions de table ne fonctionneraient pas sur MySQL soit en raison de clauses PRIMARY KEY manquantes (doit avoir cela pour AUTO_INCREMENT). S'il vous plaît vérifier votre script la prochaine fois, le rend plus agréable à aider. –