ここでの考え方は、GROUP_CONCAT が、option_stock および options テーブルに結合された stock テーブルから、ストック ID でグループ化されたオプション コードのリストをコンパイルするというものです。行の例は次のとおりです。
Name Options Transmission
'Holden Commodore' '111, 145, 166, 188' 'Auto'
このビューはそのままで機能しますが、もっとエレガントなソリューションがあると思わずにはいられませんか?
CREATE VIEW stock_view AS
(select s.description AS Name,
group_concat(o.option_code order by o.option_code ASC separator ', ')
AS Options,
(case
WHEN group_concat(o.option_code) LIKE '%111%' then 'Auto'
WHEN group_concat(o.option_code) LIKE '%112%' then 'Manual'
else 'Other'
end) as Transmission
from stock s
join option_stock ost ON s.id = ost.stock_id
join options o ON o.id = ost.option_id
group by s.id)
私はこの見苦しい GROUP_CONCAT を CASE 苦境内で使用することを避けようとしていますが、Options
次のように case ステートメント内で使用すると、フィールドが存在しないというエラーが表示されます。
WHEN `Options` LIKE '%111%' then 'Auto'
エラーがスローされる理由はわかっています。これは、この方法で別の列のエイリアスを使用できないためです。しかし、それを回避する方法はありますか?