Если у вас есть только один «слой», вы можете сделать это:
SELECT t.*
FROM theTable AS t
LEFT JOIN theTable AS rt ON t.related_id = rt.id
WHERE t.`date` = searchValue OR rt.`date` = searchValue
;
Если существует неопределенное количество слоев и у вас есть MySQL 8.0, вы можете использовать CTE:
WITH RECURSIVE myCte AS (
SELECT * FROM theTable WHERE `date` = searchValue
UNION
SELECT t.*
FROM theTable AS t
INNER JOIN myCTE ON t.related_id = myCTE.id
)
SELECT * FROM myCTE;
Отказ от ответственности: я больше знаком с MS-SQL CTE, поэтому могут быть некоторые проблемы с этим последним вариантом.