Предположим, что у нас есть следующие таблицы:

company             company_has_employee        employee
-------------------------------------------------------------
id                  company_id                  id  
companzy_name       employee_id                 emplyee_name

Как создать SQL-запрос, который извлекает любых двух сотрудников, которые работают в одной компании и что это за компания?

0
Peter Jurkovic 15 Май 2014 в 23:07

2 ответа

Лучший ответ

Предполагая, что соединения таблицы Юргена Д. верны, я изменю запрос на

select top 2 company_name, e.employee_name
   from compyny c
   join company_has_employee ce on ce.company_id = c.id
   join employee e on e.id = cs.employee_id
   group by company_name
   having count(e.id) > 1

Это всегда будет возвращать 2 лучших сотрудника

Исходный запрос juergen d всегда будет возвращать первого и последнего сотрудников на основе их идентификаторов.

Если вы хотите, чтобы два сотрудника были выбраны случайным образом, вы можете попробовать следующее:

select top 2 company_name, e.employee_name
   from compyny c
   join company_has_employee ce on ce.company_id = c.id
   join employee e on e.id = cs.employee_id
   group by company_name
   having count(e.id) > 1
   order by RAND((e.ID)*DATEPART(millisecond, GETDATE()))

Последнее предложение order by изменит порядок записей случайным образом, и вы всегда будете получать первые 2 случайного порядка ... что означает, что 2 случайных сотрудника будут выбираться при каждом запуске запроса.

1
Swagata 16 Май 2014 в 14:14
select company_name, 
       min(e.employee_name) as emp1, 
       max(e.employee_name) as emp2
from compyny c
join company_has_employee ce on ce.company_id = c.id
join employee e on e.id = cs.employee_id
group by company_name
having count(e.id) > 1
1
juergen d 15 Май 2014 в 19:11