Конференция "Базы" » Объединение записей
 
  • ddd329 (25.04.09 07:51) [0]
    Как с помощью SQL можно объеденить записи(не поля) в одну? Допустим нам надо выбрать из таблицы хобби клиента, у данного клиента может быть несколько занятий и запрос вернет несколько записей. Можно ли сделать так чтобы запрос возвращал одну запись в которой через запитую будут перечисленны его хобби???
  • Гарик (25.04.09 09:20) [1]
    Назовите СУБД. Наверное, во всех СУБД такая операция легко проделывается с помощью хранимых процедур. В Oracle можно использовать хранимые функции. Или надо применять только "чистый" SQL?
  • select f1,(select hobby from )||','||(select hobby from) from если движек(сервер) потянет такой синтаксис
  • PEAKTOP © (25.04.09 11:45) [3]
    СУБД уточни ?
    В Firebird можно так:

    SELECT LIST(H.NAME, ', ')
    FROM   CLIENT_HOBBIES H
    WHERE (H.CLIENT_ID = 12345)

  • DDD329 (26.04.09 16:29) [4]
    СУБД Access, был бы Oracle на PL/SQL состряпал бы быстренько.
  • clickmaker © (27.04.09 11:55) [5]
    а в access есть курсоры?
    и если в таблице есть уникальный id, то можно в цикле - while
  • MsGuns © (28.04.09 11:06) [6]
    В Акцесе прямым запросом - никак. Надо писать модуль.
  • clickmaker © (29.04.09 14:21) [7]
    set @MinHobby = ''
    set @Hobbues = ''
    while exists(select * from hobbies where Hobby > @MinHobby)
     set @MinHobby = (select min(Hobby) from hobbies where Hobby > @MinHobby)
     if @Hobbies <> '' @Hobbies = @Hobbies + ', '
     set @Hobbies = @Hobbies + @MinHobby
    end
 
Конференция "Базы" » Объединение записей
Есть новые Нет новых   [134474   +35][b:0][p:0.001]