状況:
私はメインテーブルを持っています。それを呼び出しましょうMainTable
。
+---------+----------+----------+----------+
| Id (PK)| Title | Text | Type |
+---------+----------+----------+----------+
| 1 | Some Text|More Stuff| A |
| 2 | Another | Example | B |
+---------+----------+----------+----------+
という 2 番目のテーブルTranslationsTable
があり、Id フィールドはMainTable
行 ID の表現です (別のテーブルを参照できるため、外部キーはありません)。ObjType は ObjectType (テーブルと同じ名前) で、FieldName はObjecType からのフィールドの名前と値には、ObjType テーブルの FieldName 値の翻訳値があります。
+---------+-----------+-----------+------------+----------+
| Id | ObjType | FieldName | Value | Language |
+---------+-----------+-----------+------------+----------+
| 1 | MainTable | Title | Algum Texto| PT |
| 1 | MainTable | Text | Mais Coisas| PT |
+---------+-----------+-----------+------------+----------+
また、翻訳されたフィールドを検索する必要があるTEMPORARY TABLE
ため、 a を使用できると考えたのですが、「どの SELECT クエリを使用すればよいか」という問題が発生しました。ピボット テーブル クエリに関するいくつかの投稿を読みましたが、クエリを作成する方法がよくわからないため、一時テーブルは次のようなものです
+---------+------------+------------+----------+
| Id (PK)| Field_1 | Field_2 | Field_3 |
+---------+------------+------------+----------+
| 1 | Algum Texto| Mais Coisas| A |
+---------+------------+------------+----------+
ありがとうございました。
編集:
MainTable の 500.000 エントリと Translations の 1.500.000 エントリの場合、他のエントリよりも約 30 倍高速であるため、AD7six の回答を受け入れました。