Php 带join的Sum函数给出的Sum是laravel ORM和mysql中条目数的乘积
有两个表<代码>账单和付款代码>,总销售额插入订单表,收入插入付款表。我想显示过去7天的总销售额和总现金收入,但我的查询结果乘以了laravel中同一日期数据的次数 表账单: 表付款: 我想获取过去七天中每天的总金额,其中Php 带join的Sum函数给出的Sum是laravel ORM和mysql中条目数的乘积,php,mysql,sql,laravel,join,Php,Mysql,Sql,Laravel,Join,有两个表账单和付款,总销售额插入订单表,收入插入付款表。我想显示过去7天的总销售额和总现金收入,但我的查询结果乘以了laravel中同一日期数据的次数 表账单: 表付款: 我想获取过去七天中每天的总金额,其中bills.created\u date=payments.created\u date。我的查询运行良好,但它会将总和乘以特定日期的条目 我的问题(拉拉维尔): 我的预期结果: array:2 [▼ 0 => {#254 ▼ +"date": "2019-03-11"
bills.created\u date=payments.created\u date
。我的查询运行良好,但它会将总和乘以特定日期的条目
我的问题(拉拉维尔):
我的预期结果:
array:2 [▼
0 => {#254 ▼
+"date": "2019-03-11"
+"total_revenue": 5.0
+"total_sales": 5.0
}
1 => {#255 ▼
+"date": "2019-03-12"
+"total_revenue": 1500.0
+"total_sales": 1500.0
}
]
我的输出:
array:2 [▼
0 => {#254 ▼
+"date": "2019-03-11"
+"total_revenue": 5.0
+"total_sales": 5.0
}
1 => {#255 ▼
+"date": "2019-03-12"
+"total_revenue": 4500.0
+"total_sales": 4500.0
}
]
但这段代码在不使用join从单个表中获取数据的情况下工作得非常好。
比如:
输出:
array:2 [▼
0 => {#259 ▼
+"date": "2019-03-11"
+"total_sales": 5.0
}
1 => {#260 ▼
+"date": "2019-03-12"
+"total_sales": 1500.0
}
]
问题来自您的加入条件:
DB::table('bills')
->Join(
'payments',
DB::raw('DATE(payments.created_at)'),
'=',
DB::raw('DATE(bills.created_at)')
)
您将删除日期的时间部分,然后加入:因此,对于每个账单
,您将得到多个匹配的付款
从您的示例数据来看,我认为它类似于列付款。bill_id
用于加入:
DB::table('bills')
->Join(
'payments',
DB::raw('payments.bill_id'),
'=',
DB::raw('bills.id')
)
DB::table('bills')
->Join(
'payments',
DB::raw('DATE(payments.created_at)'),
'=',
DB::raw('DATE(bills.created_at)')
)
DB::table('bills')
->Join(
'payments',
DB::raw('payments.bill_id'),
'=',
DB::raw('bills.id')
)