Mysql много много отношений? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть таблица Employee (employee_id, employee_name), tour (tour_id, tour_name), employee_tour (tour_id, employee_id).Как я могу получить всех сотрудников, которые присоединяются ко всему туру?

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Я бы использовал два объединения - одно в совокупном запросе, который подсчитывает все поездки, и в совокупном запросе, который подсчитывает количество посещений, которые посетил сотрудник, а затем сравнивал бы их:

SELECT     e.*
FROM       employee e
JOIN       (SELECT    employee_id, COUNT(*) AS employee_tours
            FROM      employee_tour
            GROUP BY  employee_id) et ON e.employee_id = et.employee_id
CROSS JOIN (SELECT COUNT(*) AS all_tours 
            FROM tour) t
WHERE      employee_tours = all_tours
0 голосов
/ 28 мая 2018

попробуй ..

select employee_name from
(SELECT    employee_id, COUNT(*) AS total FROM employee_tour 
        GROUP BY  employee_id) as tb 
inner join employee on tb.id_employee = employee.id_employee
where tb.total = (select count (*) from tour)
0 голосов
/ 28 мая 2018

Вы можете использовать оператор JOIN

SELECT e.*, t.*
FROM Employee e
INNER JOIN employee_tour et ON et.employee_id = e.employee_id
INNER JOIN tour t ON t.tour_id = et.tour_id

См. JOIN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...