0
어떤 이유로 든 MySQL은 뷰에서 하위 쿼리를 지원하지 않습니다. 나는 forseeable 미래를 위해 MySQL을 사용하여 붙어있어 그리고 EAV 스타일의 테이블에서 더 읽기 쉬운 형식으로 데이터를 집계하기 위해 뷰를 작성해야합니다. 뷰 자체는 Ruby on Rails 기반 애플리케이션의 모델 역할을 할 것이다 (읽기 전용이므로 뷰를 사용하는 것이 안전하다).이 복잡한 SQL 쿼리를 다시 작성하여 MySQL 뷰에 대한 하위 쿼리를 사용하지 않도록 할 수 있습니까?
내가이 동물을 개조하여보기를 만들 수 있다면 어떻게 할 수 있습니까? 내가 일련의 미니보기를 만든 다음 하나의 마스터보기 (하나의보기로 모든 경우를 다룰 수 있음)를 만들 수만 있다면 다른 방법이 있는지 궁금합니다.
다음은 괴물입니다. 모든 필드는 선택 사항이기 때문에 외부의 많은 수는 조인 그러나 나는 모든 열을 표시해야합니다
select ls.subscriberid as id, l.name as list_name,
ifnull(cfn.first_name, '') as first_name,
ifnull(cln.last_name, '') as last_name,
ifnull(ce.email_address, '') as email_address,
ifnull(cm.mobile_phone, '') as mobile_phone
from (
select ls.subscriberid, ifnull(s.data, '') as first_name
from subscribers_data s
right outer join list_subscribers ls on ls.subscriberid = s.subscriberid
where s.fieldid = 2 /* First Name */
) cfn
right outer join (
select ls.subscriberid, ifnull(s.data, '') as last_name
from subscribers_data s
right outer join list_subscribers ls on ls.subscriberid = s.subscriberid
where s.fieldid = 3 /* Last Name */
) cln on cfn.subscriberid = cln.subscriberid
right outer join (
select ls.subscriberid, ls.emailaddress as email_address
from list_subscribers ls
) ce on ce.subscriberid = cfn.subscriberid
right outer join (
select ls.subscriberid, ifnull(s.data, '') as mobile_phone
from subscribers_data s
right outer join list_subscribers ls on ls.subscriberid = s.subscriberid
where s.fieldid = 81 /* Mobile Phone */
) cm on cm.subscriberid = cfn.subscriberid
right outer join list_subscribers ls on ls.subscriberid = cfn.subscriberid
inner join lists l on ls.listid = l.listid
. 무리 감사!! –