mysql 从具有多对多关系的两个不同表中减去值

cbwuti44  于 2023-01-08  发布在  Mysql
关注(0)|答案(1)|浏览(137)

我有两个表,表1 =产品
| 产品|数量|
| - ------| - ------|
| 产品1|二十个|
| 产品2|十个|
| 产品3|十五|
| 产品2|十个|
| 产品1|五个|
products表包含在不同日期购买的、具有不同价格但名称相同的相同产品。

    • 表2:发票项表**

表2包含上述产品的发票

    • 关系**
class Products extends Model
{
 
    public function soldproducts(): HasMany
    {
        return $this->hasMany(InvoiceItem::class, 'product_id','id');
    }

}
class InvoiceItem extends Model
{
   public function products()
    {
        return $this->belongsToMany('App\Models\Products', 'product_id','id');
    }
}

我按名称将两个表分组
一个二个一个一个
上述两个查询均给出了预期结果,但

    • 我需要差额余额QTy =总量-销量**

我怎样才能把这两张表相减呢?

tpgth1q7

tpgth1q71#

若要获得两个表中数量的差值,请使用左联接将两个表联接在一起,然后使用select语句从totalqty列中减去soldqty列。

$results = DB::table('products')
    ->leftJoin('invoice_items', 'products.name', '=', 'invoice_items.name')
    ->groupBy('products.name')
    ->select(DB::raw('products.name, sum(products.qty) - sum(invoice_items.product_qty) as balance_qty'))
    ->get();

相关问题