Этот запрос даст вам нужный результат. Но вам нужно быть более конкретным в том, что вы пытались (требование).
SELECT
x.*
FROM (
SELECT
a.activity_id, a.activity_name,
IF(a.pos_id = b.id, b.name, null) AS pos_name,
IF(a.op_id = b.id, b.name, null) AS op_name
FROM
activity_table a
JOIN
custom_field_table b
) x
WHERE
x.pos_name IS NOT NULL AND x.op_name IS NOT NULL;
Однако приведенный выше запрос будет перекрестным соединением, поскольку нет никаких условий соединения. Предложение where (в этом запросе) гарантирует, что вы получите только те строки, в которых оба - pos_name и op_name не пусты.