1. ホーム
  2. mysql

[解決済み] ビューの SELECT には FROM 句にサブクエリが含まれています。

2022-02-19 11:54:32

質問

2つのテーブルがあり、ビューを作成する必要があります。テーブルは次のとおりです。

credit_orders(id, client_id, number_of_credits, payment_status)
credit_usage(id, client_id, credits_used, date)

私は以下のクエリで行っています。このクエリでは、"create view"の部分はうまく動作しますが、"create view"の部分では、エラー "View's SELECT contains a subquery in the FROM clause"が表示されます。何が問題なのか&可能な解決策。

create view view_credit_status as 
(select credit_orders.client_id, 
        sum(credit_orders.number_of_credits) as purchased, 
        ifnull(t1.credits_used,0) as used 
 from credit_orders
 left outer join (select * from (select credit_usage.client_id, 
                                        sum(credits_used) as credits_used 
                                 from credit_usage 
                                 group by credit_usage.client_id) as t0
                  ) as t1 on t1.client_id = credit_orders.client_id
 where credit_orders.payment_status='Paid'
 group by credit_orders.client_id)

解決方法は?

ドキュメントにある通りです。

MySQLドキュメント

  • SELECT ステートメントに FROM 句のサブクエリを含めることはできません。

回避策としては、サブクエリごとにビューを作成することです。

そして、ビューの中からこれらのビューにアクセスします。 view_credit_status