У меня есть две таблицы foo
и bar
.Для каждого foo есть ноль или более баров.Достаточно просто сделать LEFT OUTER JOIN
, чтобы получить набор результатов, в котором каждая строка дает мне foo плюс один из его столбцов (или NULL
, если с foo не связано ни одного столбца).
Но скажем, я хочу, чтобы все результаты сгруппировали foos вместе.Обратите внимание, что я не хочу, чтобы они агрегировались;то есть я не хочу, чтобы все строки foos с каждым первичным ключом были свернуты.Если есть foo с первичным ключом foo123
, я просто хочу, чтобы все foo123
foos отображались вместе.Я не хочу, чтобы там было, например, [foo123, foo123, foo456, foo123]
;Я хочу [foo123, foo123, foo123, foo456]
или даже [foo456, foo123, foo123, foo123]
.
Конечно, я мог бы сортировать по первичному ключу foo, но сортировка кажется излишней, так как мне безразличен порядок foos;только то, что все foo с одним и тем же идентификатором выглядят «сгруппированными» в наборе результатов.
Есть ли в SQL более эффективный способ «группировать лайки» на основе некоторых критериев без сортировки?
Я использую Oracle на тот случай, если это имеет значение.
(Для чего у меня была «блестящая» идея использовать объединение с коррелированным подзапросом для просмотра столбцовнезависимо для каждого foo, но я забыл, что у меня не может быть коррелированного подзапроса в предложении FROM
.)