複数のテーブルから来る可能性のあるフィールド値に基づいてMySQLで結果セットをソートする最良の方法は何ですか?MySQLの複数のテーブルからデータをソートする最も良い方法
簡略化のため、DBに4つのテーブルがあるとします。プライマリテーブルには多数のフィールドが含まれていますが、特に、別のテーブルの名前とそのテーブルのレコードへの外部キーを含む列が含まれています。 3つの外部テーブルにはそれぞれ、プライマリテーブルで結果を並べ替えるための名前列があります。
Example primary table:
+----+---------------+------------+-------------+
| id | foreign_table | foreign_id | more_fields |
+----+---------------+------------+-------------+
| 1 | students | 9182 | blah, blah |
| 2 | students | 1008 | blah, blah |
| 3 | parents | 3827 | blah, blah |
| 4 | teachers | 4523 | blah, blah |
| 5 | teachers | 1092 | blah, blah |
+----+---------------+------------+-------------+
Example foreign (students) table:
+-------+--------------+-------------+
| id | name | more_fields |
+-------+--------------+-------------+
| 9182 | Joe | blah, blah |
| 1008 | Sally | blah, blah |
+-------+--------------+-------------+
これはMySQLで可能ですか?または、PHPで結果をループして並べ替える配列を作成し、array_multisort()のようなものを使用する必要がありますか?配列を使用する場合は、結果をソートするだけで何千もの行をループするのが効率的でしょうか?
ご協力いただきまして誠にありがとうございます。 3つのLEFT JOIN
S(生徒、保護者、教師)とORDER BY
にそれぞれをリストは、あなたが一緒に他の3つのテーブルから名前をCOALESCE()
場合は仕事をするべき使用