我有一个条件,我想使用mysql临时表。
我有任务表和工作表。
任务与工作有一对多的关系(每个任务有一个或多个工作)
我要选择查询中每个任务的最后工作(基于created_at列)。
此查询工作正常:
SELECT *
FROM tasks t
join jobs j
on t.id = j.task_id
and j.id = ( select id
from jobs
where jobs.task_id = t.id
and jobs.deleted_at is null
order
by id desc
limit 1
)
order
by j.created_at desc;
但是我想使用更灵活的功能,例如mysql临时表:
CREATE TEMPORARY TABLE last_jobs SELECT * from jobs where ...
并使用laravel elequent和查询生成器进行构建,如果有内置函数之类的话:
Task::select('tasks.*,jobs.*')->join('jobs')->where()
如果有人可以帮助我或提供帮助,这会有所帮助。
谢谢。
答案 0 :(得分:1)
您可以在迁移中创建视图,请注意,您应该显式声明每个列名(如果名称不明确,请使用别名)。
countif(timestamp_diff(broker_delivery_date, request_datetime, minute
) >= 30
)
然后您可以将该视图用作普通表:
class CreateLastJobsView extends Migration {
public function up() {
DB::statement("CREATE VIEW last_jobs AS
SELECT t.id as task_id, j.id as job_id, ...
FROM tasks t
join jobs j
on t.id = j.task_id
and j.id = ( select id
from jobs
where jobs.task_id = t.id
and jobs.deleted_at is null
order
by id desc
limit 1
)
order by j.created_at desc");
}
public function down() {
DB::statement('DROP VIEW last_jobs');
}
}