Есть база, где записи содержатся не каждый на строке, а каждая строка - одна запись и объединены одним ID. Например, ID DATA ID_ELEM ID_DATA 1 John Smith 1 5 2 USA 2 5 3 Texas 3 5 4 [email protected] 4 5 5 Pierre LaCroi 1 6 6 France 2 6 7 Paris 3 6 8 [email protected] 4 6 9 +25557675544 5 6 10 .................... и т.д. Как видно, каждый клиент имеет свой ID_DATA. Как мне привести их в удобночитаемый вид - строка в строке? Средствами mysql непосредственно.
Нужна агрегатная функция конкатенации строк. Т.е. запрос будет выглядить так, абстрактно Code: select concat(data) from t1 group by ID_DATA , я когда-то пытался написать свою в ms sql, но есть альтерантивные решения через XML - это всё, конечно, изъебы ms sql'а Так же предлагаю обратиться к курсорам. У тебя какая субд? стучи в асю - подскажу по популярнум субд или продолжай тред тут
Спасибо, но не сработало. Поискал немного. Конкатенация нужна другая. select group_concat(DATA) from shop group by ID_ELEM Вроде работает и объединило то, что нужно. Могут быть какие ошибки в этом?
Нет, ошибок не будет. Всё верно сделал. В рамках уникального D_ELEM ты соберешь в этой строке все значения из столбца DATA соответственно.
Art!P, да ты прав. В моей базе то я правильно составил все, а тут тупанул. Спасибо. возникла еще проблема - тот запрос вроде работает, объединяет записи с одним ID_DATA, но как упорядочить их по возрастанию по ID_ELEM ? PHP: select group_concat(DATA) from shop group by ID_DATA order by ID_ELEM asc limit 500 Этот запрос не упорядочивает их.
М.б. Code: select group_concat(DATA) data from (select * from shop order by ID_DATA, ID_ELEM)k group by ID_DATA limit 500
Ниже nikp предложил решение на ОК: использовать подзапросы. Должно выглядеть так: Code: select group_concat(sq.DATA) from ( select * from shop order by ID_ELEM asc limit 500 ) sq group by sq.ID_DATA