2016-07-07 88 views
0

選擇
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。開支費用,
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
FROM booking_request
LEFT JOIN booking_details
ON booking_request.book_id = booking_details.book_id
LEFT JOIN(
              SELECT book_id,
                SUM(量)AS費用
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未決
FROM payment_balance GROUP BY book_id)PndBal
ON PndBal.book_id = booking_details.book_id
LEFT JOIN(
               選擇book_id,
              SUM(量)AS接收
FROM payment_receive GROUP BY book_id)PymtRcvd
ON DvrExp.book_id = booking_details.book_id
WHERE booking_request.status = '封閉'如何寫Zend的子查詢2

回答

0

從booking_request在主選擇缺少子句

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

我認爲這個問題是更多關於如何建立使用ZF該請求。不是嚴格的sql語法,但我可能是錯的。 – Unex

1

請參閱最後一個例子中(#17 - 開始線268上的)一個要點的我在Github創建: https://gist.github.com/andrewscaya/8b7d53cffd7c1cb61c234c0de126e964

以供將來參考:

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;