2016-07-07 6 views
0

SELECT
booking_request.book_id,
booking_request.pickup_loc,
booking_request.drop_loc,
booking_request.journey_date,
booking_request.return_date,
booking_request.distance,
booking_request.est_fare,
DvrExp zu schreiben. AS Aufwendungen Aufwendungen,
PndBal.pending AS payment_Pending,
PymtRcvd.receive AS Payment_Recevied,
booking_details.car_id AS car_id,
booking_details.car_name AS car_name,
booking_details.driver_id AS driver_id,
booking_details.driver_name AS dRIVER_NAME
VON booking_request
LEFT JOIN booking_details
ON booking_request.book_id = booking_details.book_id
LEFT JOIN (
              SELECT book_id,
                SUM (Anzahl) aufwands
FROM driver_expense GROUP BY book_id) DvrExp
ON DvrExp.book_id = Buchungsdetails.book_id
LINKE VERBINDUNG (
            SELECT book_id,
                SUM (amount_pending) AS
FROM payment_balance GROUP BY book_id pending) PndBal
ON PndBal.book_id = booking_details.book_id
LEFT JOIN (
                AUSWÄHLEN book_id,
              SUM (Anzahl) als Empfangs
FROM payment_receive GROUP BY book_id) PymtRcvd
ON DvrExp.book_id = booking_details.book_id
WHERE booking_request.status = 'geschlossen'Wie Sub-Abfrage in zend 2

Antwort

0

von booking_request in Haupt fehlt select

Klausel
SELECT booking_request.book_id 
    ,booking_request.pickup_loc 
    ,booking_request.drop_loc 
    ,booking_request.journey_date 
    ,booking_request.return_date 
    ,booking_request.distance 
    ,booking_request.est_fare 
    ,DvrExp.expenses AS expenses 
    ,PndBal.pending AS payment_Pending 
    ,PymtRcvd.receive AS Payment_Recevied 
    ,booking_details.car_id AS car_id 
    ,booking_details.car_name AS car_name 
    ,booking_details.driver_id AS driver_id 
    ,booking_details.driver_name AS driver_nameFROMbooking_request 
FROM booking_request 
LEFT JOIN booking_details ON booking_request.book_id = booking_details.book_idLEFT 
JOIN (
    SELECT book_id 
     ,SUM(amount) AS expenses 
    FROM driver_expense 
    GROUP BY book_id 
    ) DvrExp ON DvrExp.book_id = booking_details.book_id 
LEFT JOIN (
    SELECT book_id 
     ,SUM(amount_pending) AS pending 
    FROM payment_balance 
    GROUP BY book_id 
    ) PndBal ON PndBal.book_id = booking_details.book_id 
LEFT JOIN (
    SELECT book_id 
     ,SUM(amount) AS receive 
    FROM payment_receive 
    GROUP BY book_id 
    ) PymtRcvd ON DvrExp.book_id = booking_details.book_id 
WHERE booking_request.STATUS = 'Closed' 
+0

Ich denke, die Frage war, mehr darüber, wie diese Anforderung zf mit zu bauen. Nicht über die strikte SQL-Syntax, aber ich könnte falsch liegen. – Unex

1

Bitte siehe das letzte Beispiel (# 17 - ab Zeile 268) eines Kern ich auf Github erstellt: https://gist.github.com/andrewscaya/8b7d53cffd7c1cb61c234c0de126e964

Für die Zukunft:

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

    $sqlExpression = new Expression('MAX(`sku`)'); 
    $subSelect = new Select(); 
    $subSelect->from('purchases') 
      ->columns([$sqlExpression]); 
    $where = new Where(); 
    $where->in('sku', ['sku' => $subSelect]); 
    $select = new Select(); 
    $select->from('products'); 
    $select->where($where); 
0
$select = $this->getSql()->select(); 
    $select->join('booking_details','booking_request.book_id = booking_details.book_id',array('car_id', 'car_name','driver_id', 'driver_name'),"LEFT");   


    $select->join(array('DvrExp' => '(SELECT book_id, SUM(amount) AS expenses FROM driver_expense GROUP BY book_id)'),'DvrExp.book_id = booking_details.book_id',array('expenses'),"LEFT"); 
    $select->join(array('PndBal' => '(SELECT book_id, SUM(amount_pending) AS pending FROM payment_balance GROUP BY book_id)'),'PndBal.book_id = booking_details.book_id',array('pending'),"LEFT"); 
    $select->join(array('PymtRcvd' => '(SELECT book_id, SUM(amount) AS receive FROM payment_receive GROUP BY book_id)'),'PymtRcvd.book_id = booking_details.book_id ',array('receive'),"LEFT");  
    $select->where("booking_request.status = '".$booking_type."'"); 
    $this->_set_date_filter($select,$params); 
    $select->where("booking_request.request_date > '2016-06-07 00:00:00'");  

    //echo $select->getSqlString(); die; 
    $resultSet = $this->selectWith($select);   
    return $resultSet;