Zf2表网关连接查询仅从第二个表中获取最新行(按id)

时间:2016-01-04 10:31:15

标签: mysql zend-framework2 tablegateway

enter image description here

嗨,我需要一个zf2连接查询,它只从第二个表中获取最新的一行(通过id DESC)。我写了一个sql查询,但它确实有效。

SELECT st1.customer_id,
    st1.id
  FROM status st1
  inner JOIN 
  (
    SELECT max(id) MaxId, customer_id
    FROM status
    GROUP BY customer_id
  ) st2
    ON st1.customer_id = st2.customer_id
    AND st1.id = st2.MaxId

但是我需要在zend framework 2表网关格式中进行此查询。请帮忙。

1 个答案:

答案 0 :(得分:1)

    use Zend\Db\Sql\Select;
    use Zend\Db\Sql\Expression;

    $sql = new Select ();
    $sql->columns(["customer_id", new Expression ("max(id) AS MaxId")])
        ->from ('status')
        ->group('customer_id');

    $outer = new Select ();
    $outer->columns (['customer_id', 'id'])
        ->from (['st1' => 'status'])
        ->join (['st2' => $sql], 
             'st1.customer_id = st2.customer_id AND st1.id = st2.MaxId', []);