복붙노트

[SQL] 보기의 선택은 FROM 절에 하위 쿼리를 포함

SQL

보기의 선택은 FROM 절에 하위 쿼리를 포함

나는 두 개의 테이블을 가지고 있고보기를 만들어야합니다. 테이블은 다음과 같습니다 :

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

나는이 작업을 수행하기 위해 다음 쿼리를 사용합니다. "보기를 생성"부분이없는 쿼리는이 오류가 "보기의 SELECT가 FROM 절에서 하위 쿼리를 포함"이 표시 잘하지만 "보기를 만들 수"와 함께 작동합니다. 무엇이 문제 및 가능한 해결책이 될 수있다 :

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)

해결법

  1. ==============================

    1.문서에 따라 :

    문서에 따라 :

    MySQL의 문서

    귀하의 해결 방법은 하위 쿼리의 각 뷰를 작성하는 것입니다.

    그런 다음 뷰 view_credit_status 내에서 해당 뷰에 액세스

  2. ==============================

    2.

    create view view_clients_credit_usage as
        select client_id, sum(credits_used) as credits_used 
        from credit_usage 
        group by client_id
    
    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 view_clients_credit_usage as t1 on t1.client_id = credit_orders.client_id
        where credit_orders.payment_status='Paid'
        group by credit_orders.client_id)
    
  3. ==============================

    3.보기 제한에 대한 최근의 MySQL 설명서를 말한다로서 :

    보기 제한에 대한 최근의 MySQL 설명서를 말한다로서 :

    이 방법은 MySQL의 v5.7.7 이상을 선택하거나 같은 버전으로 기존의 MySQL 인스턴스를 업그레이드하는 것을 완전히 뷰이 제한을 제거하는 것입니다.

    당신이 v5.7.7보다 이전 현재의 생산 MySQL 버전이있는 경우 그러나, 다음 뷰에 대한 이러한 제한의 제거는 업그레이드 여부를하기로 결정하면서 기준 중 하나가 평가 될 수 있어야합니다. 적어도 짧은 실행에 - 다른 답변에 설명 된 해결 기법을 사용하여보다 실행 가능한 해결책이 될 수 있습니다.

  4. ==============================

    4.나에게 외모는 MySQL을 3.6은 다음과 같은 오류를하는 동안 MySQL은 3.7 더 이상 오류가 밖으로 제공한다. 나는이 수정에 관한 문서에서 아무것도 찾을 아직입니다.

    나에게 외모는 MySQL을 3.6은 다음과 같은 오류를하는 동안 MySQL은 3.7 더 이상 오류가 밖으로 제공한다. 나는이 수정에 관한 문서에서 아무것도 찾을 아직입니다.

  5. from https://stackoverflow.com/questions/8428641/views-select-contains-a-subquery-in-the-from-clause by cc-by-sa and MIT license