다소 복잡한 쿼리가 있으며 단계별로 Zend_Db_Select를 사용하여 빌드 할 수 있습니다. 쿼리 모습이 추천했습니다 :Zend_Db_Select를 사용하여 조인을 사용하여 쿼리의 열 순서를 변경하는 방법
SELECT `subscribers`.`subscriber_id`, `subscribers`.`email_address`, `subscribers`.`first_name`,
`subscribers`.`last_name`, `t1`.`value` AS `'SingleLineField'`, `t2`.`value` AS `'MultilineField'`,
`t3`.`value` AS `'CheckboxField'`
FROM `subscribers`
INNER JOIN (SELECT subscriber_id
FROM subscribers
WHERE list_id =68 AND state=1
LIMIT 0, 25) AS `s` ON subscribers.subscriber_id = s.subscriber_id
LEFT JOIN `subscribers_custom_data_string` AS `t1` ON subscribers.subscriber_id=t1.subscriber_id AND t1.field_id=177
LEFT JOIN `subscribers_custom_data_string` AS `t2` ON subscribers.subscriber_id=t2.subscriber_id AND t2.field_id=178
LEFT JOIN (SELECT subscribers_multivalued.subscriber_id, field_id, GROUP_CONCAT(value SEPARATOR ',') AS value
FROM subscribers_multivalued
INNER JOIN (SELECT subscriber_id
FROM subscribers
WHERE list_id =68 AND state=1
LIMIT 0, 25) AS s1 ON subscribers_multivalued.subscriber_id=s1.subscriber_id
WHERE field_id=179
GROUP BY subscribers_multivalued.subscriber_id, field_id) AS `t3` ON subscribers.subscriber_id=t3.subscriber_id AND t3.field_id=179
을하지만 지금은 동적으로 수 같은 것으로 상기 쿼리를 변환 할, 열 순서를 변경 할 수 있어야합니다 :
SELECT `subscribers`.`subscriber_id`, `subscribers`.`email_address` , `t1`.`value` AS `'SingleLineField'`, `t2`.`value` AS `'MultilineField'`,
`t3`.`value` AS `'CheckboxField'`, `subscribers`.`first_name`,
`subscribers`.`last_name`
FROM `subscribers`
INNER JOIN (SELECT subscriber_id
FROM subscribers
WHERE list_id =68 AND state=1
LIMIT 0, 25) AS `s` ON subscribers.subscriber_id = s.subscriber_id
LEFT JOIN `subscribers_custom_data_string` AS `t1` ON subscribers.subscriber_id=t1.subscriber_id AND t1.field_id=177
LEFT JOIN `subscribers_custom_data_string` AS `t2` ON subscribers.subscriber_id=t2.subscriber_id AND t2.field_id=178
LEFT JOIN (SELECT subscribers_multivalued.subscriber_id, field_id, GROUP_CONCAT(value SEPARATOR ',') AS value
FROM subscribers_multivalued
INNER JOIN (SELECT subscriber_id
FROM subscribers
WHERE list_id =68 AND state=1
LIMIT 0, 25) AS s1 ON subscribers_multivalued.subscriber_id=s1.subscriber_id
WHERE field_id=179
GROUP BY subscribers_multivalued.subscriber_id, field_id) AS `t3` ON subscribers.subscriber_id=t3.subscriber_id AND t3.field_id=179
또는 예를 들어
, 뭔가 하나 같이 :SELECT `subscribers`.`subscriber_id`, `t1`.`value` AS `'SingleLineField'`, `t2`.`value` AS `'MultilineField'`,
`t3`.`value` AS `'CheckboxField'`, `subscribers`.`email_address`, `subscribers`.`first_name`,
`subscribers`.`last_name`
FROM `subscribers`
INNER JOIN (SELECT subscriber_id
FROM subscribers
WHERE list_id =68 AND state=1
LIMIT 0, 25) AS `s` ON subscribers.subscriber_id = s.subscriber_id
LEFT JOIN `subscribers_custom_data_string` AS `t1` ON subscribers.subscriber_id=t1.subscriber_id AND t1.field_id=177
LEFT JOIN `subscribers_custom_data_string` AS `t2` ON subscribers.subscriber_id=t2.subscriber_id AND t2.field_id=178
LEFT JOIN (SELECT subscribers_multivalued.subscriber_id, field_id, GROUP_CONCAT(value SEPARATOR ',') AS value
FROM subscribers_multivalued
INNER JOIN (SELECT subscriber_id
FROM subscribers
WHERE list_id =68 AND state=1
LIMIT 0, 25) AS s1 ON subscribers_multivalued.subscriber_id=s1.subscriber_id
WHERE field_id=179
GROUP BY subscribers_multivalued.subscriber_id, field_id) AS `t3` ON subscribers.subscriber_id=t3.subscriber_id AND t3.field_id=179
문제는 내가 Zend_Db_Select 여러 번에서 방법을 사용할 수 없습니다 (이 새로운 생성 내가 원하는하지 않은이 경우 참여합니다)를 orde를 변경하는 것입니다 r의 전자 메일, 이름 및 성 필드를 포함합니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
페이징 인이 필요하기 때문에 Zend_Db_Select가 필요합니다. – Oleg
질의 2 또는 3처럼 간헐적 인 열 (메인 테이블과 조인 테이블에서)을 사용하여 Zend_Db_Select를 만드는 방법을 지금 볼 수 없습니다. – Oleg
이 질문에 대한 답을 찾을 수 없습니다. – Oleg