1. ホーム
  2. mysql

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

2022-08-22 21:18:06

質問

私は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