Laravel 5 如何使用Laravel查询生成器从联合结果中获取最小值或最大值?
我想从union表中获取一个最小值 作为MySQL查询,如下所示Laravel 5 如何使用Laravel查询生成器从联合结果中获取最小值或最大值?,laravel-5,Laravel 5,我想从union表中获取一个最小值 作为MySQL查询,如下所示 SELECT MIN(PromisedDate) FROM (SELECT PromisedDate FROM JobWorkOrder WHERE `PromisedDate` IS NOT NULL UNION SELECT ScheduledDate AS PromisedDate FROM JobPhase WHERE `ScheduledDate` IS NOT NULL) ScheduledTable
SELECT MIN(PromisedDate)
FROM (SELECT PromisedDate FROM JobWorkOrder WHERE `PromisedDate` IS NOT NULL
UNION
SELECT ScheduledDate AS PromisedDate FROM JobPhase WHERE `ScheduledDate` IS NOT NULL) ScheduledTable;
$JobPhase = JobPhase::where('ScheduledDate', '<>', null)
->select('ScheduledDate AS PromisedDate');
$minDate = JobWorkOrder::where('PromisedDate', '<>', null)
->select('PromisedDate')
->union($JobPhase)
->min('PromisedDate');
此查询的结果是JobWorkOrder和JobPhase表中PromisedDate和ScheduledDate的最小值
因此,我构建了一个如下所示的Laravel查询
SELECT MIN(PromisedDate)
FROM (SELECT PromisedDate FROM JobWorkOrder WHERE `PromisedDate` IS NOT NULL
UNION
SELECT ScheduledDate AS PromisedDate FROM JobPhase WHERE `ScheduledDate` IS NOT NULL) ScheduledTable;
$JobPhase = JobPhase::where('ScheduledDate', '<>', null)
->select('ScheduledDate AS PromisedDate');
$minDate = JobWorkOrder::where('PromisedDate', '<>', null)
->select('PromisedDate')
->union($JobPhase)
->min('PromisedDate');
如何构建Laravel查询?从子查询中选择
min
字段:
$JobPhase = JobPhase::where('ScheduledDate', '<>', null)
->select('ScheduledDate AS PromisedDate');
$sub = $JobWorkOrder = JobWorkOrder::where('PromisedDate', '<>', null)
->select('PromisedDate')
->union($JobPhase);
$minDate = DB::table( DB::raw("({$sub->toSql()}) as sub") )
->mergeBindings($sub->getQuery())
->min('PromisedDate');
$JobPhase=JobPhase::where('ScheduledDate','',null)
->选择('ScheduledDate AS PromisedDate');
$sub=$JobWorkOrder=JobWorkOrder::where('PromisedDate','',null)
->选择(“承诺人”)
->工会(就业阶段);
$minDate=DB::table(DB::raw(“({$sub->toSql()})作为sub”))
->合并绑定($sub->getQuery())
->min(“承诺人”);
另请参见:您可以从get()函数结果中获取min。 只需在查询中添加一个get()函数
$JobPhase = JobPhase::where('ScheduledDate', '<>', null)
->select('ScheduledDate AS PromisedDate');
$minDate = JobWorkOrder::where('PromisedDate', '<>', null)
->select('PromisedDate')
->union($JobPhase)
->get()
->min('PromisedDate');
$JobPhase=JobPhase::where('ScheduledDate','',null)
->选择('ScheduledDate AS PromisedDate');
$minDate=JobWorkOrder::where('PromisedDate','',null)
->选择(“承诺人”)
->工会(就业阶段)
->得到()
->min(“承诺人”);
然后你会得到一个最小值