sorry for the newbie questions, just started learning SQL. I have two tables:
- sessions
- items
sessions
table has questions
(RECORD, Repeated), and inside questions
there’s item_id
(String)
items
table has topics
(RECORD, Repeated), and inside topics
there’s prior_difficulty
(String). items
table also has item_id
(String)
My objective is to get a list of sessions and its prior_difficulty, by joining the two tables with their item_id
. TIA
Advertisement
Answer
You can first use the unnest()
function to retrieve all the item_id
s from the sessions table and then join them with the item_id
from the items table.
To retrieve the prior_difficulty
from your struct column topics
, you can also use the unnest()
function :
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
or if you want to create a repeated record column to group prior_difficulty
values by session_id
:
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