我想选择最新的条目,但没有时间戳(created_at)可以通过选择主键上的max来识别它。问题在于子查询中需要加入表。
查询如下:
$prodarr = DB::table('onhand_inventory')
->leftJoin('mapping', 'onhand_inventory.sku', '=', 'mapping.sku')
->where('mapping.mid', function ($query) {
$query->select('mapping.mid')->from('mapping')
->whereRaw('onhand_inventory.sku = mapping.sku')
->max('mapping.mid');
})->leftJoin('order_products', 'order_products.sku', '=', 'onhand_inventory.sku')
->leftJoin('vendors', 'mapping.v_id', '=', 'vendors.vid')
->where('onhand_inventory.shipped_with_box', 0)
->groupBy('onhand_inventory.inv_id')
->orderBy('onhand_inventory.inv_id')
->get();
执行上述查询后,抛出以下错误 未找到列:1054未知列' onhand_inventory.sku'在' where子句'
如何将onhand_inventory的数据与子查询中的映射进行比较。
答案 0 :(得分:1)
您已加入映射表,因此您不需要子查询。
$prodarr = DB::table('onhand_inventory')
->leftJoin('mapping', 'onhand_inventory.sku', '=', 'mapping.sku')
->leftJoin('order_products', 'order_products.sku', '=', 'onhand_inventory.sku')
->leftJoin('vendors', 'mapping.v_id', '=', 'vendors.vid')
->where('onhand_inventory.shipped_with_box', 0)
->orderBy('mapping.mid', 'desc')
->groupBy('onhand_inventory.inv_id')
->orderBy('onhand_inventory.inv_id')
->limit(1)
->get();
我没有运行代码,但我希望这会有所帮助。