我有四张表。1)材料2)广告3)报价请求4)交易
我需要写一个查询,它将选择事务中涉及的每种材料的事务重量之和
我尝试的查询如下,
Transaction::->select(DB::raw("IF(transactions.is_sell = '1', advertisements.weight, offerrequests.weight) as weight"),DB::raw("IF(transactions.is_sell = '1', advertisements.material_id, offerrequests.material_id) as material_id"))
->leftJoin('advertisements', function ($join) {
$join->on('advertisements.id', '=', 'transactions.post_id');
})
->leftJoin('offerrequests', function ($join) {
$join->on('offerrequests.id', '=', 'transactions.post_id');
})
->leftJoin('materials', function ($join) {
$join->on('materials.id', '=', 'material_id');
})
->groupBy('material_id')->get();
交易记录表
| 身份证|物料标识|正在出售|帖子标识|
| --------------|--------------|--------------|--------------|
| 1|1|1|二十|
广告表
| 身份证|物料标识|重量|
| --------------|--------------|--------------|
| 1|1|10个|
OfferRequests表
| 身份证|物料标识|重量|
| --------------|--------------|--------------|
| 1|1|二十|
材料表
| 身份证|名称|
| --------------|--------------|
| 1|塑胶|
| 第二章|纸|
我的预期结果会是这样
| 重量|材料|
| --------------|--------------|
| 三十|塑料|
| 五十|纸|
1条答案
按热度按时间dsf9zpds1#
您可以尝试查询如下:
并打印重量和材料名称为: