I am trying to achieve the following…
x
with
relations as (
select
rm.recordId,
rs.fieldId,
rm.relationSettingId,
rm.relatedRecordId
from relationMapping rm
left join relationSetting rs on rs.id = rm.relationSettingId
),
foo as (
select distinct
coalesce(rnff.fieldId, field.id)
from field
left join relationNameFromField rnff
on rnff.relationSettingId = relations.relationSettingId -- <---- Won't work
)
select * from foo;
I get the following error:
Unknown column 'relations.relationSettingId' in 'on clause'
Why can’t I reference the relations
table?
Advertisement
Answer
Based on your CTE, this is just a guess, but I think you probably want:
with
relations as (
select
rm.recordId,
rs.fieldId,
rm.relationSettingId,
rm.relatedRecordId
from relationMapping rm
left join relationSetting rs
on rs.id = rm.relationSettingId
),
foo as (
select distinct
coalesce(rnff.fieldId, field.id)
from field
left join relations --add this join here
on field.id = relations.fieldId
left join relationNameFromField rnff
on rnff.relationSettingId = relations.relationSettingId
)
select * from foo;
We don’t know your table structures, so I can’t say I have the right columns for that join, but I’d say it’s a pretty educated guess.