If the REFERENCE_TABLE
has flags for all fields of each entity, then you can use this:
SELECT
T1.ID,
MAX(CASE WHEN T2.field_name = 'field_1' AND T2.show = 1 THEN T1.field_1 END) field_1,
MAX(CASE WHEN T2.field_name = 'field_2' AND T2.show = 1 THEN T1.field_2 END) field_2,
MAX(CASE WHEN T2.field_name = 'field_3' AND T2.show = 1 THEN T1.field_3 END) field_3,
FROM TABLE_EXAMPLE T1
JOIN REFERENCE_TABLE T2
ON T1.id = T2.entity_id
WHERE T2.table_name = 'TABLE_EXAMPLE'
GROUP BY T1.ID
or use LEFT JOIN
if you omit some flags. Then the omitted flags will treats as 0.