LIMIT с JOIN с использованием Zend Framework - PullRequest
1 голос
/ 04 апреля 2011

У меня есть 2 таблицы parent, children с отношением 1: M.Мне нужна нумерация страниц.Я использую SELECT с JOIN.На 1 родителя у меня есть дети.Если я попытаюсь сделать LIMIT 10, этот запрос получит всего 10 строк.Но мне нужно получить только 10 строк из таблицы parent со всеми отношениями.Как мне это сделать?Извините за мой английский.Заранее спасибо.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 Framework:

$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);

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Лучше использовать Zend_Paginator для разбивки на страницы в одной таблице и затем запрашивать дочерние элементы для каждого элемента:

$paginator = Zend_Paginator::factory($this->select(), 'DbTableSelect');
$paginator->setItemsCountPerPage(5);
foreach ($paginator as $row) {
    $children = $row->getDependentRowset('ChildrenRule');
}
1 голос
/ 04 апреля 2011

Я не знаю о Zend Framework. Вот простое решение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...