dialog.afterClosed().pipe(
mergeMap(result1 => this.unitService.importPack(result.file).pipe(
map(result2 => ({ result1, result2 }))
))
).subscribe(({ result1, result2 }) => { ... });
Сопоставьте результат второго запроса, чтобы получить желаемый результат. Здесь я возвращаю объект типа { result1: any, result2: any }
I don't know what RDBMS you're using, but in MySQL you can use GROUP_CONCAT:
SELECT
p.name,
GROUP_CONCAT(c.name SEPARATOR ', ') AS categories
FROM
product p
JOIN product_to_category pc ON p.id = pc.product_id
JOIN category c ON c.id = pc.category_id
GROUP BY
p.name
ORDER BY
p.name,
c.name
Ответ Себа поставил меня на правильный путь для обходного пути. Я использую Oracle, и он имеет функции, которые имитируют MYSQL group_concat
. Вот пример. Это не генерирует столбцы и, следовательно, не так хорошо, как решение на чистом SQL, но подходит для моих текущих целей.
with data as
(
select
pc.id cat,
p.id prod,
row_number() over( partition by p.id order by pc.id) rn,
count(*) over (partition by p.id) cnt
from product_to_category pc, product p
where pc.product_id = p.id
)
select prod, ltrim(sys_connect_by_path(cat, ','), ',') cats
from data
where rn = cnt
start with rn = 1 connect by prior prod = prod and prior rn = rn - 1
order by prod
Это генерирует такие данные, как
PROD | CATS =========== 284 | 12 285 | 12 286 | 9,12
. Я могу редактировать столбец ltrim (sys_connect_by_path ()) по мере необходимости, чтобы генерировать любые данные, которые мне нужны.
SELECT p.name, cat_food.name, cat_flowers.name
FROM
product p
left outer join Product_to_category pc_food
on p.id = pc_food.Prod_id
left outer join Category cat_food
on pc_food.Cat_id = cat_food.id
AND cat_food.name = 'Food'
left outer join Product_to_category pc_flowers
on p.id = pc_flowers.Prod_id
left outer join Category cat_flowers
on pc_flowers.Cat_id = cat_flowers.id
AND cat_flowers.Name = 'Flowers'
Это работает, только если вы знаете количество возможных категорий, чтобы поместить их в столбцы. Вот как (стандартный) SQL работает, число столбцов не является динамическим.
Вы не можете создать эти результаты с помощью строгого запроса SQL. То, что вы пытаетесь создать, называется сводной таблицей . Многие инструменты отчетности поддерживают такое поведение, когда вы выбираете свой продукт и категорию, а затем превращаете категорию в сводный столбец.
Я считаю, что службы аналитики SQL Server также поддерживают подобные функции, но у меня нет опыта работы со SSAS.