如何在 BigQuery 中连接两个 table,但连接参数是嵌套的
How to JOIN two table in BigQuery, but the join parameter are nested
抱歉新手问题,刚开始学习SQL。我有两个 tables:
- 场次
- 项
sessions
table 有 questions
(RECORD, Repeated), questions
里面有 item_id
(String)
items
table 有 topics
(RECORD, Repeated),在 topics
里面有 prior_difficulty
(String)。 items
table 也有 item_id
(字符串)
我的 objective 是通过将两个 table 与其 item_id
连接起来来获取会话列表及其 prior_difficulty。 TIA
您可以先使用 unnest()
函数从会话 table 中检索所有 item_id
,然后将它们与项目 [=] 中的 item_id
连接起来25=].
要从结构列 topics
中检索 prior_difficulty
,您还可以使用 unnest()
函数:
select distinct
sessions.session_id,
t.prior_difficulty
from sessions, unnest(questions) q
left join items on q.item_id = items.item_id, unnest(topics) t
或者如果您想创建重复记录列以按 session_id
对 prior_difficulty
值进行分组:
select
sessions.session_id,
array_agg(distinct t.prior_difficulty ignore nulls) as prior_difficulties
from sessions, unnest(questions) q
left join items on q.item_id = items.item_id, unnest(topics) t
group by 1
抱歉新手问题,刚开始学习SQL。我有两个 tables:
- 场次
- 项
sessions
table 有 questions
(RECORD, Repeated), questions
里面有 item_id
(String)
items
table 有 topics
(RECORD, Repeated),在 topics
里面有 prior_difficulty
(String)。 items
table 也有 item_id
(字符串)
我的 objective 是通过将两个 table 与其 item_id
连接起来来获取会话列表及其 prior_difficulty。 TIA
您可以先使用 unnest()
函数从会话 table 中检索所有 item_id
,然后将它们与项目 [=] 中的 item_id
连接起来25=].
要从结构列 topics
中检索 prior_difficulty
,您还可以使用 unnest()
函数:
select distinct
sessions.session_id,
t.prior_difficulty
from sessions, unnest(questions) q
left join items on q.item_id = items.item_id, unnest(topics) t
或者如果您想创建重复记录列以按 session_id
对 prior_difficulty
值进行分组:
select
sessions.session_id,
array_agg(distinct t.prior_difficulty ignore nulls) as prior_difficulties
from sessions, unnest(questions) q
left join items on q.item_id = items.item_id, unnest(topics) t
group by 1