Запрос к таблице "многие ко многим"

Sync

Новичок
Запрос к таблице "многие ко многим"

Есть талица с двумя полями job_id и profile_id.

job_id profile_id
3         1
5         1
7         1
1         7
3         7

Поступили входные данные job_id = 1, job_id = 5

Нужно отобрать все profile_id, которые могут делать как работу job_id = 1 так и job_id = 5. Понятно, что в данном примере результат должен вернуть 0 строк - каждый профайл может выполнять эту работу по отдельности, но не одновременно.

Если же входными будут например job_id = 3, job_id = 5, то результатом будет только profile_id=1.

Помогите с запросом, пожалуйста.
 

mani13

Новичок
1. JOIN таблицы на себя
в мануале, надеюсь, найдёшь как делается? :)
2. вложенные SELECT'ы(если БД держит)
там же

мысль такова -- выбирать все подходящие записи для первого job_id, join'ить на второй job_id с учётом того, что profile_id одинаковый
 

Sync

Новичок
Пробовал так:

SELECT a.profile_id
FROM profiles_link_jobs a
LEFT JOIN profiles_link_jobs b
ON a.job_id = b.job_id
WHERE a.profile_id = b.profile_id AND a.job_id IN ( 1, 5 )

получаю
profile_id
1
7
:(
 

baev

‹°°¬•
Команда форума
Подсказали же: «join'ить на второй job_id с учётом того, что profile_id одинаковый»

ON a.profile_id = b.profile_id
 
Сверху