2016-01-04 2 views
1

enter image description herepasserelle de table ZF2 requête de jointure pour récupérer uniquement la dernière ligne (par id) du deuxième table

Salut, je besoin d'un ZF2 joindre requête qui va chercher uniquement la dernière ligne (par ID Asc) de la deuxième table. J'ai écrit une requête sql et cela fonctionne.

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 

Mais j'ai besoin de cette requête au format passerelle zend framework 2 table. S'il vous plaît aider.

Répondre

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', []); 
+0

Merci @akond il fonctionne, sauf nouvelle expression ("max (id) AS maxid")] celui-ci. Je pense que nous devrions utiliser 'MaxId' => new Expression ("max (id)") au lieu de cela. – murad