Слияние нескольких записей

Дядя Володя
Дата: 01.12.2006 16:33:18
Подбросьте, плз, не запрос, так идейку по решению следующего вопроса.

Записи в таблице организованы следующим образом:
Имяполе 1поле 2поле 3поле 4поле 5
Иванов151851132243564
Иванов1518518098546234
Иванов151851567231123
Петров454789324899456
Петров454789808543732
Петров454789435444221
Сидоров283696234642275
Сидоров283696393350249
Сидоров283696983238215


Требуется:
Имяполе 1поле 2поле 3поле 4поле 5поле 6поле 7поле 8поле 9поле 10поле 11
Иванов1518511322435648098546234567231123
Петров454789324899456808543732435444221
Сидоров283696234642275393350249983238215


Варианты, которые только в виде фантазий:
1) Условие выборки (Иванов=Иванов), затем перегруппировка (не знаю как)
2) Разбить на 3 таблицы (записи встречаются только тройками и первые несколько полей у них одинаковы), а затем к первой, например, прилепить данные из других двух

Проблема в том, что даже для реализации этих своих идей, я не знаю какими операторами воспользоваться.
barrabas
Дата: 01.12.2006 16:39:47
на чистом аксSQL можно сделать следующим образом, сначало объединить в все столбцы а один (union) незабывая номерацию строк сделать, а потом перекрестный запрос
_____________________________________
Мое конг-фу сильнее твоего
mds_world
Дата: 01.12.2006 16:42:53
А если Иванов встретится 20 раз, то сколько полей будет, ой-ее-ей!
Ваша проблема решается перекрестным запросом (см., а также оператор Transform), но мне кажется, что или вы сильно упростили постановку задачу.
barrabas
Дата: 01.12.2006 16:46:10
объединение
select имя, поле1 as поле from tabl
union (не union ALL)
select имя, поле2 as поле from tabl
union
select имя, поле3 as поле from tabl
union
select имя, поле4 as поле from tabl
union
select имя, поле5 as поле from tabl

потом результат (или созрани этот запрос и спользуй его как таблицу или как подзапрос) нужно пронумеровать причем у каждой фамилии нумерация своя (примеры в FAQ Q7)

а затем на основании результата перекрестный запрос, его можно мастером построить на основании сохраненного запроса, если сам не умеешь

удачи

ЗЫ или самописная функция тебе поможет, запрос будет легче но думаю медленнее

_____________________________________
Мое конг-фу сильнее твоего
Дядя Володя
Дата: 01.12.2006 16:48:00
Я вот по возможности жду более подробные ответы :). Например, "нумерация строк" - значит нужен цикл?, т.к. понятно что строк не 9, а 900.
Поэтому, будьте любезны, укажите операторы или предложения, которыми можно воспользоваться.
barrabas
Дата: 01.12.2006 16:56:00
а по ссылке сходить несудьба? там пример Q7 то что нужно
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 01.12.2006 16:57:04
полей то 5 изначально или тоже 500?
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 01.12.2006 16:59:55
и незабываем что есть ограничение в 256 полей да и нечитабельно будет, как я понял каждое уникальное число мы заносим в отдельнео поле или можно в одно через разделитель?
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 01.12.2006 17:02:35
для варианта с разделителем можно так - это ссылка
_____________________________________
Мое конг-фу сильнее твоего
Дядя Володя
Дата: 01.12.2006 17:04:38
Полей грубо говоря 20. Иванов встретиться только 3 раза.
Каждую запись только в новое поле, а не через разделитель.