MySQL INSERT INTO SÉLECTIONNEZ JOINDRE
Je suis en train de modifier de MySQL de base à la nouvelle - je espérer de mieux. Donc j'ai une question parce que je ne peux pas le gérer moi-même:
J'ai une vieille table qui a 5 colonnes:
*table_old*
id | name_1 | name_2 | name_3 | role
1 | aaa | bbb | ccc | g
2 | aaa | ccc | ddd | f
3 | bbb | aaa | ddd | g
et ainsi de suite.
J'ai fait une nouvelle table pour stocker les valeurs de nom avec 2 colonnes et ça ressemble à ça:
*table_name*
id | name
1 | aaa
2 | bbb
3 | ccc
4 | ddd
Parce que je suis de nommage de nouvelles tables à l'aide de rôle (dernière colonne de la vieille table) je peux créer un nouveau tableau avec 4 colonnes afin d':
*table_g*
id | name_1 | name_2 | name_3
1 | aaa | bbb | ccc
2 | bbb | aaa | ddd
*table_f*
id | name_1 | name_2 | name_3
1 | aaa | ccc | ddd
Aussi parce que le nom peut être très long, je préfère utiliser la valeur de l'id de la table 2 place nom - je voudrais obtenir quelque chose comme ça:
*table_g*
id | id_1 | id_2 | id_3
1 | 1 | 2 | 3
2 | 2 | 1 | 4
*table_f*
id | id_1 | id_2 | id_3
1 | 1 | 3 | 4
J'ai changé le nom des colonnes à partir de *name_1* à *id_1* etc.
Maintenant, je suis en demandant de l'aide. Je suis en train d'utiliser quelque chose comme ça:
INSERT INTO `table_g`(`id_1`, `id_2`, `id_3`)
SELECT `table_name`.`id`,`table_name`.`id`,`table_name`.`id`
FROM `table_name`
RIGHT JOIN `table_old` ON `table_name`.`name` = `table_old`.`name_1`
RIGHT JOIN `table_old` ON `table_name`.`name` = `table_old`.`name_2`
RIGHT JOIN `table_old` ON `table_name`.`name` = `table_old`.`name_3`
WHERE `table_old`.`role` = 'g';
Mais cela ne fonctionne pas... s'il vous Plaît aider si vous le pouvez :/
- Que voulez-vous dire par "ne fonctionne pas"? Ne vous obtenez une erreur? Est-il quelque chose à propos ambigus nom", par hasard?
- Hum, je ne suis pas sûr, mais je crois que vous avez oublié certains parenthèse:
INSERT INTO table ()... (SELECT... FROM... JOINS WHERE...)
- non, je n'ai
#1054 - Unknown column 'table_old'.'role' in 'where clause'
Vous devez vous connecter pour publier un commentaire.
À première vue, il y a beaucoup d'ambiguïté dans votre sélection afin, au moins, vous devriez essayer ce qui se passe à l'aide du code ci-dessus.
#1054 - Unknown column 't1.id' in 'field list'
select * from table_old limit 1
?id | name_1 | name_2 | name_3 | role 1 | aaa | bbb | ccc | g
je pense que, malade d'utilisation mise à JOUR :/