Search code examples
sqlrelationships

SQL relationships


I have four tables:

  1. task - have a batch_id and estimates of how long a task would take to complete
  2. batches - groups of tasks
  3. batch_log - entries showing the time worked for each task with a userid for who worked it.
  4. operation - type of machine the batch is run on, paint, silkscreen, etc.

How would I get each batch worked for each user, the total elapsed from each batch log for those batch ids and the total estimate from each task id for that batch?

EDIT:

TABLES:

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

I'm thinking:

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

The reasoning for doing this is so that it can be possible to rate the users on how productive they are and use these queries in excel. I think I may have to go with two queries:

  1. the batch log
  2. a query to get the total estimated for each batch

Solution

  • Something like:

    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
    

    Hard to say without any sort of table structure to go by.