select *
from pubs p
join pubnodes pn on p.pubId = pn.pubptr
join pubtargets pt on p.pubId = pt.pubptr
join pubsections ps on p.pubId = ps.pubptr
where (pn.NodePtr = A) AND (pt.TargetPtr = B) AND (ps.SectionPtr = C)
;
Спасибо, рабочий вариант.
Я докрутил еще вариант решения, нужно понять, что оптимальнее (по explan — решение с join содержит меньше операций, но я не понял, как сравнить производительность).
select * from Pubs
where PubId in
(
(select PubId from pubs inner join PubNodes on PubId = PubNodes.PubPtr
where PubNodes.NodePtr = A)
intersect
(select PubId from pubs inner join PubTargets on PubId = PubTargets.PubPtr
where PubTargets.TargetPtr = B)
intersect
(select PubId from pubs inner join PubSections on PubId = PubSections.PubPtr
where PubSections.SectionPtr = C)
)