2012-05-03 3 views
0

У меня есть таблица шестигранных цветов (500 строк) и таблица стран (~ 250rows). Я хотел бы использовать цикл, чтобы пройти через каждую страну, назначив ему шестнадцатеричный цвет из шестнадцатеричной таблицы в столбце «цвет»loop in phpmyadmin

Могу ли я сделать это в phpmyadmin?

ответ

0

Используйте UPDATE заявление с подзапрос для выбора значения из шестнадцатеричной таблицы:

UPDATE `countries` SET `color` = 
    (SELECT `color` FROM `hex_colors` ORDER BY RAND() LIMIT 1) 

В PHPMyAdmin, выберите базу данных, а затем нажмите на вкладку SQL в верхней части экрана администратора. Введите оператор обновления, затем нажмите кнопку «Go»

EDIT: Если вы хотите, чтобы один к одному отображению между значениями цвета и странами, так что никаких значений не дублируется, я хотел бы добавить временную колонку в каждая таблица, т.е. order, запустить обновление, которое будет назначать последовательные значения в этот столбец для обоего таблиц, а затем обновить таблицу стран с цветовыми значениями из таблицы шестигранного цвета, к которому присоединилось order:

SELECT @i := 0; 
SELECT @j := 0; 
ALTER TABLE `countries` ADD COLUMN `order` INT; 
ALTER TABLE `hex_colors` ADD COLUMN `order` INT; 
UPDATE `countries` SET `order` = @i := @i + 1; 
UPDATE `hex_colors` SET `order` = @j := @j + 1; 
UPDATE `countries` c, `hex_colors` h SET c.`color` = h.`color` 
    WHERE c.`order` = h.`order`; 
ALTER TABLE `countries` DROP COLUMN `order`; 
ALTER TABLE `hex_colors` DROP COLUMN `order`; 
+0

не удался RAND() может поместить один и тот же цвет в две строки? Я бы предпочел, чтобы строка 1 из шестицветников вставлялась в строку 1 стран и так далее ... – livinzlife

+0

Обновлен мой ответ, чтобы отразить тот факт, что вы хотите сопоставление «один к одному» –

+0

Очень приятное решение, отлично работало! благодаря – livinzlife