我有一个很大的查询,我正试图获取orders.price列的总和。使用下面的代码,它只返回44.00,这是第一行的价格。当我运行原始SQL时,它会在名为“AGGREGATE”的列中返回一个包含1,000多行价格的列。我想以所有这些价格返回一个总额。
当我删除groupBy时,它工作得很好。然而,groupby就在那里,因为我似乎得到了重复的行。
$query = Order::leftJoin('customers', 'orders.customer_id', '=', 'customers.customer_id')
->leftJoin('addresses', 'orders.order_id', '=', 'addresses.order_id')
->where('orders.customer_id', '!=', 0);
$query->whereIn('user_id', [3, 5, 10, 15]);
$query->groupBy('orders.order_id');
$sum = $query->sum('orders.price');
我在这里省略了一些代码,但连接实际上是必要的。
这是生成的SQL:
SELECT
sum(`orders`.`price`) AS AGGREGATE
FROM
`orders`
LEFT JOIN `customers` ON `orders`.`customer_id` = `customers`.`customer_id`
LEFT JOIN `addresses` ON `orders`.`order_id` = `addresses`.`order_id`
WHERE
`orders`.`customer_id` IS NOT NULL
AND `orders`.`customer_id` != '0'
AND `orders`.`user_id` IN (3, 5, 10, 15)
GROUP BY
`orders`.`order_id`
ORDER BY
`orders`.`order_id` DESC
答案 0 :(得分:0)
您可能必须用子查询替换JOIN:
@NgModule({
declarations: [
HeaderNavbarComponent
MessageMenuComponent
],
exports: [
],
bootstrap: [AppComponent]
})
export class myModule { }
然后您可以删除int chdir(const char *path);
。
如果您使用关系:
WHERE EXISTS (
SELECT *
FROM customers
WHERE orders.customer_id=customers.customer_id
AND ...
)