Название: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: Danila_Bagrofff от Апрель 25, 2011, 09:54 Можно ли получить как-либо запрос, который объединит в одной строке следующие параметры.
есть 2 таблицы. В первой таблице описания объектов objects: idObj nameObj typeObj stateObj Есть 2 таблица attributes с атрибутами объектов, связь идет c объектами по idObj. idObj typeAttr Attr Хотелось бы как-то сделать запрос, в котором объединились в одной строке: idObj nameObj typeObj stateObj и дальше перечисление всех Attr. То есть сразу видеть все параметры данного объекта. Возможно ли сделать такой запрос? Сам ответа не нашел... Название: Re: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: Пантер от Апрель 25, 2011, 09:56 man join
Название: Re: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: Danila_Bagrofff от Апрель 25, 2011, 12:40 нет, join'а недостаточно..
смотри 1 таблица, objects idObj nameObj typeObj stateObj 1 Объект1 Тип1 Сост1 2 Объект2 Тип2 Сост2 2 таблица, attributes idObj typeAttr Attr 1 типА1 123 1 типА2 321 1 типА3 324 2 типА1 565 2 типА3 456 Запрос вида select idObj, nameObj, typeObj, stateObj, Attr from objects join attributes on attributes.idObj = objects.idObj where objects.idObj = 1 Нам даст 3 строчки 1 Объект1 Тип1 Сост1 123 1 Объект1 Тип1 Сост1 321 1 Объект1 Тип1 Сост1 324 А я хотел бы увидеть одну такого вида: 1 Объект1 Тип1 Сост1 123 321 324 Вот как состряпать такое.. никак не разумею.. Название: Re: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: Пантер от Апрель 25, 2011, 12:52 На сколько я помню, так не получится сделать.
Название: Re: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: asvil от Апрель 25, 2011, 12:53 Так это же чистой воды агрегация. Если Вы счастливый обладатель Postgresql, то сделайте примерно
Код: select idObj, nameObj, typeObj, stateObj, array_agg(Attr) Иначе всматривайтесь в агрегирующие в массивы функции в Вашей СУБД Название: Re: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: MoPDoBoPoT от Апрель 25, 2011, 21:28 Если нет возможности решить стандартными средствами СУБД (как продемонстрировал Михаил), то можно воспользоваться самописной хранимой функцией, которая на вход получает "idObj", а возвращает сцепленные строки "Attr" для данного объекта.
Название: Re: Запрос объединяющий ключевое поле и несколько строк в другой таблице Отправлено: vlad-mal от Май 24, 2011, 06:23 В FireBird, к примеру, есть агрегатная функция List, которая формирует список значений с разделителями (например, через запятую).
|