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
0
A
Antwort
0
von booking_request in Haupt fehlt select
KlauselSELECT 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'
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;
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