BigQuery — соединить таблицу в столбце массива

Таблица 1

элемент единица продана пункт - 2 единица продана Икс 1000 у 500

Таблица 2

набор предметов предметы в комплекте а ['х, у'] б ['х, у, г']

Мне нужно присоединиться к таблице 1 и 2. Если элемент и элемент-2 совпадают с элементами в комплекте.

Желаемый результат

элемент единица продана пункт - 2 единица продана набор предметов предметы в комплекте Икс 1000 у 500 а [х, у] Икс 1000 у 500 б [х, у, г]

Я пытался использовать unnest безуспешно.

Left join (
    select b_sku, array_agg(c_sku) as children 
    from p
    group by p.b_sku
  ) y
ON i.sku = unnest(y.children)
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
107
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот решение, которое может сработать для вас:

with table_a as (
  select 'x' as item, 1000 as unit_sold union all
  select 'y' as item, 500 as unit_sold union all
  select 'k' as item, 500 as unit_sold
),
table_b as (
  select 'x' as bundle_item, ['x', 'y'] as items_in_bundle union all
  select 'y' as bundle_item, ['x', 'y', 'z'] as items_in_bundle union all
  select 'k' as bundle_item, ['x', 'y', 'z'] as items_in_bundle
)
select * from table_a a 
left join  table_b b on a.item = b.bundle_item
where a.item in unnest(b.items_in_bundle)

В результате строка с элементом «k» не будет объединена, потому что элемент «k» находится вне массива «items_in_bundle».

Рассмотрим ниже запрос.

Мне нужно присоединиться к таблице 1 и 2. Если элемент и элемент-2 совпадают с элементами в комплекте.

WITH table1 AS (
  SELECT 'x' item, 1000 unit_sold, 'y' item_2, 500 unit_2_sold
),
table2 AS (
  SELECT 'a' bundle_items, ['x', 'y'] items_in_bundle UNION ALL
  SELECT 'b', ['x', 'y', 'z'] UNION ALL
  SELECT 'c', ['x', 'u', 'v']
)
SELECT *
  FROM table1 t1 LEFT JOIN table2  t2 
    ON t1.item IN UNNEST(t2.items_in_bundle) 
   AND t1.item_2 IN UNNEST(t2.items_in_bundle);

Результаты запроса

Спасибо, работает отлично. Я использовал '=' вместо 'IN'. Ошибка новичка.

Adi 26.11.2022 00:29

Другие вопросы по теме