Si capisce meglio adesso.....
Non puoi estrarre il nome della tabella ed utilizzarlo nella stessa query e questo rende la tabella table_tables inutile al tuo scopo. Dovresti aggiungere un campo media_id alle tabelle categories e pages e poi utilizzarle direttamente con table_media poiche' la relazione sara' sempre 1 a molti. 1 media con molti record categories o pages. La query diventerebbe:
codice:
select
--- quello che serve
from media
left join categories on media.media_id = categories.media.id
left join pages on media.media_id = pages.media_id
..... se serve where
se invece cuoi sapere da quante tabelle e' utilizzato un certo media basta la classica query:
codice:
select distinct tables.table_name
from table_media_records a
left join table_media b using(media_id)
left_join table_tables c using(table_id)
puoi fare un mixer delle query per estrarre un eventuale nome tabella/record.