テーブルの中に状態カラムを持つテーブル(Bテーブル)の条件に応じて出力する順番を変えるSQLを作成したいのですが上手く実現できません。
どのように修正すれば実現できるでしょうか?
sql
1SELECT 2 `A`.*, 3 `B`.id as B_id, 4 `C`.id as C_id, 5 `C`.operating_status as C_operating 6FROM `A` 7inner join `B` on `A`.id = `B`.A_id 8left outer join `C` on `C`.B_id = `C`.id 9ORDER BY 10 `A`.A_name ASC, 11 FIELD(C_operating, '稼働中', '一時停止中', '終了');
実行しているSQLは細部は省きますが上記のものです。
AテーブルとBテーブルが親子関係にあり、BテーブルとCテーブルが親子関係にあります。
実行結果としては
単にAテーブルのA_nameで並び替えられたものの内部で状態ごと(稼働中、一時停止中、終了中)に順序が変わるだけなので
状態が終了中のみのデータでもA_nameの昇順で上の方に存在してしまいます。
下記イメージ図
本来実現したいこととしては
状態が’稼働中’であるデータを含んでいるものは上。
'一時停止中'、'終了中'のみのものは下。という順番にしたいということです。
上記にあるイメージでは完全に稼働状況別に別れてしまっていて同一A_nameがあっても状態が異なる場合は表示場所が変わってしまいます。
おそらくサブクエリを使うかなにかしないといけないとは思うのですが処理が浮かばないので、お力添えいただきたいです。
足りない情報などがあれば追記しますのでよろしくお願いいたします。