create view if not exists claimables as with trades as (select distinct trade_node from provinces where trade_node != ''), areas as (select distinct area from provinces where area != ''), regions as (select distinct region from provinces where region != '') select 'trade_node' as typ, provinces.trade_node as name, name as province, id from provinces inner join trades on trades.trade_node = provinces.trade_node union select 'area' as typ, provinces.area as name, name as province, id from provinces inner join areas on areas.area = provinces.area union select 'region' as typ, provinces.region as name, name as province, id from provinces inner join regions on regions.region = provinces.region ;