2011-04-04 83 views
1


我有2個表parent,children與關係1:M。我需要分頁。我通過JOIN使用SELECT。對於1名父母,我有一些孩子。如果我試圖使LIMIT 10這個查詢總共得到10行。但我需要從表parent只有10行與所有關係。我該怎麼做?
對不起,我的英語。先謝謝你。

MySQL查詢:限制與JOIN使用Zend框架

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); 
+0

你能提供查詢的一些例子,或者你有什麼現在? – Marcin 2011-04-04 11:55:46

+0

你可以發佈代碼嗎? – bluedaniel 2011-04-04 11:56:32

+0

好的。好。好。查看我的編輯。 – pltvs 2011-04-04 12:00:20

回答

1

我不知道了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 
1

這是更好地使用Zend_Paginator的通過一個表進行分頁,然後要求孩子每一個項目:

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