Я пытаюсь создать запрос с подзапросом в cakePHP 3.5, но он не соответствует ожидаемому, пожалуйста, найдите подробности ниже и помогите мне решить его.
SQL: -
$sql = '
SELECT
t1.id, t1.code, t1.description, t1.customer_id, t1.delivery_date
(
SELECT SUM(t2.quantity) AS completed
FROM table2 AS t2
WHERE t2.customer_id = t1.customer_id
AND t2.delivery_date = t1.delivery_date
) AS completed
FROM table1 AS t1
';
это запрос, который я хочу построить с CakePHP ORM
Запрос CakePHP: -
Я попробовал приведенный ниже код для выполнения моего запроса
$data = $this->Table1->query->select([
't1.id',
't1.code',
't1.description',
't1.customer_id',
't1.delivery_location_id',
'completed' => $this->Table2->find()->select([
'completed' => 'SUM(Table2.quantity)'
])->where([
'Table2.customer_id' => 'Table1.customer_id',
'Table2.delivery_location_id' => 'Table1.delivery_location_id'
])
]);
Фактический результат: -
Это мой факт из CakePHP ORM, вы можете видеть, что он имеет 0 в условии WHERE подзапроса.
SELECT
Table1.id AS `Table1__id`,
Table1.code AS `Table1__code`,
Table1.description AS `Table1__description`,
Table1.customer_id AS `Table1__customer_id`,
Table1.delivery_location_id AS `Table1__delivery_location_id`,
(
SELECT
sum(
Table2.quantity
) AS `completed`
FROM
table2 Table2
WHERE (
Table2.customer_id = 0
AND Table2.delivery_location_id = 0
)
) AS `completed`,
FROM
table1 Table1
LIMIT
10 OFFSET 0
Ожидаемый результат: -
Я ожидаю, что результат должен быть, как показано ниже.
SELECT
Table1.id AS `Table1__id`,
Table1.code AS `Table1__code`,
Table1.description AS `Table1__description`,
Table1.customer_id AS `Table1__customer_id`,
Table1.delivery_location_id AS `Table1__delivery_location_id`,
(
SELECT
sum(
Table2.quantity
) AS `completed`
FROM
table2 Table2
WHERE (
Table2.customer_id = Table1.customer_id
AND Table2.delivery_location_id = Table1.delivery_location_id
)
) AS `completed`,
FROM
table1 Table1
LIMIT
10 OFFSET 0