Выглядит не очень интуитивно, я думаю:
SELECT CONCAT('<a href="', href, '">', label, '</a>') as a FROM
(
SELECT DISTINCT
CONCAT(
IF(ISNULL(t1.url), '', t1.url),
IF(ISNULL(t2.url), '', CONCAT('/', t2.url)),
IF(ISNULL(t3.url), '', CONCAT('/', t3.url))
) AS href,
IF(ISNULL(t3.name), IF(ISNULL(t2.name), t1.name, t2.name), t3.name) as label
FROM `test`.`7679298` t1
LEFT JOIN `test`.`7679298` t2 ON t2.parent = t1.id
LEFT JOIN `test`.`7679298` t3 ON t3.parent = t2.id
GROUP BY label) d;
Результат:
<a href="office/contact">Contact</a>
<a href="index/offer/map">Map</a>
(РЕДАКТИРОВАТЬ: заменено CASE
на IF
)