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'
InformationsquelleAutor Naarciss | 2012-04-19