Получение данных Master-Detail из Oracle без отдельных строк для детализации - PullRequest
0 голосов
/ 16 января 2010

Хорошо, я попробовал поискать, но не смог придумать приличную идею о том, к чему обращаться, поэтому я решил опубликовать вопрос.Как я могу отозвать основную / подробную информацию, не дублируя основные данные вместе с каждой строкой подробных данных?

С учетом следующего сценария:

Master - Cars
=============
decimal  car_id (pk)
string   name
decimal  cost
decimal  doors

Child - Colors
=============
decimal color_id (pk)
decimal car_id (fk)
string  color

Итак, учитывая приведенные выше данные,если бы у меня была машина, которая была доступна в красных, зеленых и синих тонах (я не делаю шампанское), то, как я обычно делаю, я бы вернул в свой набор 3 строки.

Есть лив любом случае, чтобы все «цвета» были объединены в одно поле или возвращены как массив?Таким образом, я могу просто получить 1 ряд для каждой машины?

Ответы [ 2 ]

1 голос
/ 16 января 2010

Это звучит как Вопрос присоединения к SQL (вопрос, который я задал некоторое время назад. Получил хороший ответ)

0 голосов
/ 16 января 2010

Мне кажется, что ваша таблица COLORS пытается быть и справочной таблицей, и таблицей пересечения, но если она у вас такая, то:

select car_id, ltrim(sys_connect_by_path(color,','),',') colors 
  from 
   (select car_id, color, row_number() over (partition by car_id order by color) rn
          from colors 
       ) rn
  where connect_by_isleaf=1
  connect by prior rn+1=rn and prior car_id = car_id 
  start with rn=1
;

должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...