SQL关系

| 我有四个表: 任务-具有batch_id并估算任务完成所需的时间 批处理-任务组 batch_log-显示每个任务的工作时间的条目,并带有一个用户ID(工作人员)。 操作-批次运行的机器类型,油漆,丝网印刷等。 如何使每个用户的每个批次工作,这些批次ID的每个批次日志的总消耗量以及该批次的每个任务ID的总估算值? 编辑: 表格:
task
id     estimated_nonrecurring   estimated_recurring  batch_id

batch
id     operation_id date_entered

batch_log
id     userid    batch_id   time_elapsed

operation
id     name
我在想:
get each user;
get a list of distinct batch_ids that they worked on;
get a sum of all the time_elapsed from each batch_log for those batch id;
get all the non_recurring and the recurring for each task with each batch_id;

so that the result is like

userid, operation, batch_id, total_elapsed, total_estimate, date_entered
这样做的理由是,可以对用户的生产率进行评分,并在excel中使用这些查询。我想我可能必须要考虑两个问题: 批处理日志 查询以获取每个批次的估计总数     
已邀请:
就像是:
SELECT bl.UserId, b.name, t.estimate
FROM batch_log as bl
JOIN batches as b
    ON b.id = bl.batch_id
JOIN task as t
    ON t.id = b.task_id
WHERE bl.UserId = 123
没有任何表结构可以说很难。     
我不确定您的表的结构,但是这样的方法应该可以工作:
select batch.id, 
(select sum(batch.time)
from batch_log 
inner join task on task.id = batch_log.id
where task.batchId = batch.id) as total,
(select sum(task.estimate ) from task where task.batchId = batch.id) as estimate
from batch
inner join task on task.batchId = batch.id
where batch_log.userId = @userId
    
从t.taskid = bl.taskid上的batch_log bl内部联接任务t中选择不同的bl.userid和t.batchid; 从批处理b中选择sum(bl.time_spent),b.batchid在b.batchid = t.batchid内联接任务t上在bl.taskid = t.taskid上进行内部联接batch_log bl; 从b.batchid = t.batchid的批处理b左连接任务t中选择sum(t.estimate),b.batchid; 为什么将其称为batch_log,但它涉及任务和所花费的时间?     

要回复问题请先登录注册