いくつかの可能なテーブルのいずれかを参照する列を有するの実施は、多型の関連呼ばれます。これは、リレーショナルデータベース設計のルールを破るハックです。
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