2017-01-30 3 views
-2

У меня возникла небольшая проблема с выяснением этой инструкции SQL. У меня три таблицы employee, job и job type.выбор нескольких элементов из нескольких таблиц с минимальным и максимальным

job type - справочная таблица. У него есть имя задания, сколько времени занимает эта работа и сколько начисляется за эту работу.

job имеет записи о том, какая работа была выполнена для какого клиента, с каким сотрудником и с какой датой. Ссылка на job typejobname.

employee имеет имя сотрудника и employee id. Ссылка на job таблица employee id.

Мне нужно отобразить список всех сотрудников, а также самые дешевые и самые дорогие рабочие места, которые они выполняли в течение данного года.

Я думаю, что мне, вероятно, придется иметь встроенный select и несколько joins. Возможно, union Сложность слишком далека от моего опыта. Я даже не знаю, где быть честным.

+0

Дайте таблицы столбцы детали и какие запросы вы пробовали, пожалуйста. – jfneis

+0

Было бы лучше, если бы вы предоставили образцы данных и ожидаемый результат. – GurV

+0

Вот краткий обзор таблицы: http://pastebin.com/RYaCFHia Каждый сотрудник выполнил три задания. Я еще не пробовал никаких запросов, потому что я никогда не был уверен, как это сделать. – user2328273

ответ

0

Вы должны использовать таблицу employee в качестве основной таблицы в своем запросе, чтобы получить одну строку на одного сотрудника, даже если этот сотрудник связан с 0 заданиями. Затем используйте внешние соединения к таблицам и job_type, группе по идентификаторам сотрудника и используйте агрегированные функции min() и max() в таблице заданий, чтобы выбрать минимальные и максимальные затраты на работу (если они есть).

Что-то, как это должно помочь вам начать работу:

select employee.employee_id , 
    employee.employee_name, 
    min(job_type.cost), 
    max(job_type.cost) 
from employee 
    left outer join job on job.employee_id = employee.employee_id 
    left outer join job_type on job_type.job_type_id = job.job_type_id 
group by employee.employee_id, 
    employee.employee_name 
+0

Спасибо. Это очень помогает. У меня не было чего-то такого сложного, поэтому я даже не был уверен, с чего начать с логики. – user2328273

Смежные вопросы