Практика иметь столбец, который ссылается на один из нескольких возможных таблиц называется полиморфных ассоциаций. Это взлом, который нарушает правила реляционной базы данных.
SQL не поддерживает условные объединения к различным таблицам в зависимости от значения, которое вы находите в данной строке. Все таблицы должны быть известны в то время, когда база данных анализирует запрос.
Вы можете присоединиться к всем этих таблиц с внешними соединениями, потому что именно один из этих таблиц должны содержать матч:
SELECT c.*, COALESCE(u.name, p.name, t.name, s.name) AS name
FROM tbl_comments AS c
LEFT OUTER JOIN tbl_users u ON c.to = u.id AND c.type = 'number'
LEFT OUTER JOIN tbl_persons p ON c.to = p.id AND c.type = 'player'
LEFT OUTER JOIN tbl_teams t ON c.to = t.id AND c.type = 'team'
LEFT OUTER JOIN tbl_sports s ON c.to = s.id AND c.type = 'league';
Или вы могли бы присоединиться к одной из этих таблиц, но ограничение на строки, вы знаете матч:
SELECT c.*, u.name
FROM tbl_comments AS c
INNER JOIN tbl_users u ON c.to = u.id
WHERE c.type = 'number'
UNION ALL
SELECT c.*, p.name
FROM tbl_comments AS c
INNER JOIN tbl_persons u ON c.to = p.id
WHERE c.type = 'player'
UNION ALL
SELECT c.*, t.name
FROM tbl_comments AS c
INNER JOIN tbl_teams t ON c.to = t.id
WHERE c.type = 'team'
UNION ALL
SELECT c.*, s.name
FROM tbl_comments AS c
INNER JOIN tbl_sports s ON c.to = s.id
WHERE c.type = 'league'
Я бы попробовал этот. благодаря – Jetoox