Your scenario doesn’t sound typical, but here is a proof-of-concept:
#+BEGIN_QUERY
{
:query [:find ?res
:where
[?page :block/name ?page-name]
[?block :block/page ?page]
[?block :block/marker ?marker]
(or-join [?block ?ref]
[?block :block/refs ?ref]
[?block :block/path-refs ?ref]
)
[?ref :block/original-name ?ref-name]
[(!= ?ref-name ?marker)]
[(!= ?ref-name ?page-name)]
[?block :block/content ?content]
[(str ?ref-name ": " ?content) ?res]
]
:result-transform sort
}
#+END_QUERY