【问题标题】:LIMIT with JOIN using Zend FrameworkLIMIT with JOIN 使用 Zend 框架
【发布时间】:2011-07-29 03:03:21
【问题描述】:


我有 2 个表 parentchildren,关系为 1:M。我需要一个分页。我使用 SELECT 和 JOIN。对于 1 位父母,我有一些孩子。如果我尝试让LIMIT 10 这个查询得到总共 10 行。但我只需要从表parent 中获取所有关系的 10 行。我该怎么做?
对不起我的英语。提前谢谢您。

mysql查询:

SELECT `o`.`id` AS `order_id`, `od`.`id` AS `order_destination_id` FROM `order` AS `o`
 LEFT JOIN `order_destination` AS `od` ON o.id = od.order_id LIMIT 5

Zend 框架:

$select = $this->select()
    ->setIntegrityCheck(false)
    ->from(array('o' => 'order'), array('order_id' => 'id'))
    ->joinLeft(array('od' => 'order_destination'), 'o.id = od.order_id', array('order_destination_id' => 'id'))
    ->limit(5);

【问题讨论】:

  • 您能否提供一些查询示例,或者您现在拥有什么?

标签: php mysql zend-framework select join


【解决方案1】:

最好使用 Zend_Paginator 对一个表进行分页,然后为每个项目请求子项:

$paginator = Zend_Paginator::factory($this->select(), 'DbTableSelect');
$paginator->setItemsCountPerPage(5);
foreach ($paginator as $row) {
    $children = $row->getDependentRowset('ChildrenRule');
}

【讨论】:

    【解决方案2】:

    我不了解 Zend 框架。这是一个简单的 SQL 解决方案:

    SELECT `o`.`id` AS `order_id`, `od`.`id` AS `order_destination_id` FROM `order` AS `o`
    LEFT JOIN `order_destination` AS `od` ON o.id = od.order_id 
    where (select count(*) from order o2 where o2.id > o.id) < 10
    

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多