You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

空Pivot表下关联采购与价格表的MySQL及Laravel查询实现

基于合理的表字段假设(原问题未明确各表具体字段名),以下是两种实现方案:

MySQL 原生查询语句

假设各表核心字段如下:

  • 采购表(purchase):country, medicine, quantity, purchase_date(采购日期字段)
  • 价格表(prices):country, medicine, price_year(价格对应的年份), price

由于中间关联表price_purchase为空,直接关联采购表与价格表即可实现需求:

SELECT
    p.country,
    p.medicine,
    p.quantity,
    pr.price
FROM purchase p
JOIN prices pr
    ON p.country = pr.country
    AND p.medicine = pr.medicine
    AND YEAR(p.purchase_date) = pr.price_year;

如果需要保留无对应价格的采购记录(价格显示为NULL),可将JOIN替换为LEFT JOIN。

Laravel Query Builder 实现方案

基于上述字段假设,使用Laravel查询构造器实现:

use Illuminate\Support\Facades\DB;

$results = DB::table('purchase as p')
    ->select('p.country', 'p.medicine', 'p.quantity', 'pr.price')
    ->join('prices as pr', function ($join) {
        $join->on('p.country', '=', 'pr.country')
             ->on('p.medicine', '=', 'pr.medicine')
             ->on(DB::raw('YEAR(p.purchase_date)'), '=', 'pr.price_year');
    })
    ->get();

若需保留无对应价格的采购记录,将join方法替换为leftJoin即可。

内容的提问来源于stack exchange,提问作者jose-cuevas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:01:25