1

Oracle から MySQL に移植する必要がある次のビューがあります。これは Oracle では完全に機能しますが、subquery cannot exist in a viewエラーのため MySQL では機能しません。これを MySQL で動作するように変換するにはどうすればよいですか? これについて別の見方をするとしたら、パフォーマンスにどのような影響がありますか? それはお勧めですか?もしそうなら、どうすればそれを行うことができますか? 2番目のビューがそれほど素晴らしいアイデアではない場合、これを変換する方法は? ご協力いただきありがとうございます!

CREATE OR REPLACE VIEW view_name (var1, var2, var3, var4, var5) AS 
SELECT SUM(A.var1a) var1,
        SUM(A.var2a) var2,
        SUM(A.var3a) var3,
        SUM(A.var4a) var4,
        SUM(A.var5a) var5
 FROM (SELECT CASE columnx when 'abc' then COUNT(E.ID) end var1a,
     CASE columnx when 'def' then COUNT(E.ID) end var2a,
     CASE columnx when 'ghi' then COUNT(E.ID) end var3a,
     CASE columnx when 'jkl' then COUNT(E.ID) end var4a,
                    COUNT(E.ID) var5a
             FROM   <list of tables>
            WHERE   <set of conditions>
         GROUP BY   columnx) A;
4

1 に答える 1

1

以下を使用してこれを書き換えることができるはずです。

CREATE OR REPLACE VIEW view_name (var1, var2, var3, var4, var5) AS 
SELECT 
    sum(CASE columnx when 'abc' then 1 else 0 end) var1a,
    sum(CASE columnx when 'def' then 1 else 0 end) end var2a,
    sum(CASE columnx when 'ghi' then 1 else 0 end) end var3a,
    sum(CASE columnx when 'jkl' then 1 else 0 end)end var4a,
    COUNT(E.ID) var5a
FROM   <list of tables>
WHERE   <set of conditions>
于 2013-03-05T20:03:08.407 に答える