始める前に、私を責めないでください。データベースを設計したのは私ではありません。必要に応じて列を追加できることは十分承知しています。
次の mySQL のスニペットを検討してください。
SELECT r.id,
crf.field_name,
crf.field_value
FROM reports r
JOIN custom_report_fields crf
ON crf.report_id = r.id
WHERE r.id IN ( 100, 101 )
AND field_name LIKE "service_%"
これらの役に立たない結果が得られます。
ID | field_name | field_value
------------------------------------------------
100 | service_id_1 | 20
100 | service_name_1 | "Shipping"
100 | service_cost_1 | 5.25
101 | service_id_1 | 21
101 | service_name_1 | "Handling"
101 | service_cost_1 | 7.50
101 | service_id_2 | 20
101 | service_name_2 | "Shipping"
101 | service_cost_2 | 7.75
次のような結果が得られるクエリが必要です。
Report ID | Field ID | Name | Cost
------------------------------------------------
100 | 20 | "Shipping" | 5.25
101 | 21 | "Handling" | 7.50
101 | 20 | "Shipping" | 7.75
レポートには任意の数のコストが関連付けられる可能性があり、連続するコストごとに別の 3 つのエントリと増加したサフィックス ('service_id_x'、'service_name_x'、'service_cost_x') が取得されます。
この質問に答えた人は、あなたが選んだ宗教の他の信者よりもはるかに優れた死後の世界を手に入れるでしょう。