Поменять порядок слов в ячейке таблицы

zIP

Новичок
Поменять порядок слов в ячейке таблицы

Ячейка таблицы содержит два слова разделенных пробелами.

Нужно поменять их местами.

Можно ли это сделать с помощью запроса, или надо задействовать php?
 

zIP

Новичок
В общем задача усложнилась. В некоторых полях по три слова:

Михаил Николаевич Алексеев
Михаил Николаевич Алексеев
Нора Борисовна Аргунова
Марк Азов, Валерий Михайловский
В. Бахревский
Шейла Барнфорд
Александр Беляев
Георгий Березко
П. Бляхин
Нина Боуден
Нина Бодэн
В связи с чем я решил использовать php для сортировки. Конструкция получилась ужасная и шибко обжорливая, из-за многочисленности запросов.
Но мне нужно сделать это всего один раз, и пусть он хоть два часа работает.
Но вот беда. Сортирует не так как надо, а ошибку найти не могу.
PHP:
	$res = $db->get_results("SELECT author FROM books", ARRAY_A);
    foreach($res as $num => $string) {
    	foreach ($string as $n => $author) {
			$new[$string['author']] = array ($string['author']);

            $names = explode (" ", $author);

        	$mod = $names[2]." ".$names[0]." ".$names[1];
        	$mod2 = $names[1]." ".$names[0];
        	$mod3 = $names[0]." ".$names[1];
        	echo $i++." - ".$mod."<br>";
        	echo $ii++." - ".$mod2."<br>";
        	echo $iii++." - ".$mod3."<br>";
           $db->query("UPDATE books SET author='$mod' WHERE author='$author'");
       	$db->query("UPDATE books SET author='$mod2' WHERE author='$mod3'");

     }
}
Т.е. при выводе на экран все в порядке, а вот в таблице получается плохо.

Класс mysql я проверял - работает вполне корректно. Все запросы выполняет как надо.
 

bkonst

.. хочется странного?...
Ты не забыл сказать, что ты хочешь получить, и что получается на самом деле?
 

zIP

Новичок
Исходные данные:

1 - Михаил Николаевич Алексеев
2 - Михаил Николаевич Алексеев
3 - Нора Борисовна Аргунова
4 - Марк Азов
5 - В. Бахревский
6 - Шейла Барнфорд
7 - Александр Беляев
8 - Георгий Березко
9 - П. Бляхин
10 - Нина Боуден
11 - Нина Бодэн
12 - Николай Владимирович Богданов
Получаеться:
1 - Алексеев Михаил Николаевич
2 - Алексеев Михаил Николаевич
3 - Аргунова Нора Борисовна
4 - Марк Азов,
5 - В. Бахревский
6 - Шейла Барнфорд
7 - Александр Беляев
8 - Георгий Березко
9 - П. Бляхин
10 - Нина Боуден
11 - Нина Бодэн
12 - Богданов Николай Владимирович
Надо получить:
1 - Алексеев Михаил Николаевич
2 - Алексеев Михаил Николаевич
3 - Аргунова Нора Борисовна
4 - Азов Марк
5 - Бахревский В.
6 - Барнфорд Шейла
7 - Беляев Александр
8 - Березко Георгий
9 - Бляхин П.
10 - Боуден Нина
11 - Бодэн Нина
12 - Богданов Николай Владимирович
 

bkonst

.. хочется странного?...
Посмотри, что у тебя будет в таблице после выполнения первого запроса. Обрати внимание, что он всегда меняет запись.
 

zIP

Новичок
Автор оригинала: bkonst
Посмотри, что у тебя будет в таблице после выполнения первого запроса. Обрати внимание, что он всегда меняет запись.
Так... После первого запроса корректно выглядят строки с тремя словами. Строки с двумя, естественно не затронуты.

Думаю...
 

zIP

Новичок
А. Черт. Затронуты, пробел добавился в начало. Попробую.
 

Trianon

Новичок
Код:
update books 
   set author = 
     rpad(trim(substring_index(author,' ',-1)), length(author), concat(' ',author))
 
Сверху