MySQL - выбрать строки, имеющие определенные значения во второй таблице - PullRequest
0 голосов
/ 30 октября 2018

Допустим, у меня есть две таблицы:

люди:

id | name
---------
1  | John 
2  | Jack
3  | Pepe

jobs_people_relations:

job | person
------------
15  | 1
16  | 1
15  | 2
16  | 3

И я хочу выбрать всех людей, у которых есть работа № 15 и № 16, но нет людей, у которых есть только работа № 15 или только № 16. Это значит, что я хочу принять Джона. Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Ваш пример кажется немного расплывчатым, однако в T-SQL вы можете попробовать это

Select 
Distinct name 
From people 
Inner Join jobs_people_relations 
On people.id = jobs_people_relations.person
Where people.id = 1
0 голосов
/ 31 октября 2018

Это должно работать:

select p.id, p.name from people p
join jobs_people_relations r on p.id = r.person
where r.job in(15,16)
group by id, name
having count(*) = 2
0 голосов
/ 30 октября 2018
  • Вы можете сделать Group By на личную информацию.
  • Используйте условное агрегирование в предложении Having, чтобы отфильтровать случай, когда у человека есть job = 15 AND job = 16.

Попробуйте следующее:

SELECT
  p.id, 
  p.name 
FROM people AS p
JOIN jobs_people_relations AS jpr ON jpr.person = p.id 
GROUP BY p.id, p.name 
HAVING 
  SUM(jpr.job = 15) AND 
  SUM(jpr.job = 16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...