あるテーブルの列が、対応するレコードを探す必要があるテーブル名であるデータベースがあります。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TABLE questions |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Field | Type |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| question_id | int(11) |
| question_response_table | enum('question_responses_datetime','question_responses_int','question_responses_float','question_responses_bool','question_responses_text','question_responses_enum') |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
列の各値はquestion_response_table
、ユーザー応答を保持する別のテーブルです (元の DB 設計では、応答をデータ型ごとに別のテーブルに分離する必要がありました)。
ユーザーの応答を除いて、必要なものすべてを取得するクエリがあります。しかし、パフォーマンス上の理由から、その応答を同じクエリに追加したいと思います (DB は毎年大幅に増加します)。これが私がやりたいことの例です:
SELECT cr.category_id, cr.category_response_id, r.response
FROM category_responses AS cr
JOIN response_key_questions AS rkq ON cr.category_id = rkq.category_id
JOIN questions AS q ON q.question_id = rkq.question_id
JOIN {q.question_response_table} AS r ON r.category_response_id = cr.category_response_id
WHERE cr.belongs_to = 4 AND cr.reporting_year_id = 1 AND cr.date_retired IS NULL
ORDER BY cr.category_id