Помогите написать запрос

Bor-ka

Новичок
Помогите написать запрос

Имеется таблица для реализации связи М:М

ID | P1 | P2
1 | 1 | 1
2 | 1 | 4
3 | 1 | 5
4 | 2 | 2
5 | 2 | 4
6 | 2 | 6
7 | 3 | 4
8 | 3 | 5

Необходимо получить все P1, для которых есть в P2 все из заранее определенного множества, например для (4,5) надо получить:

P1
1
3

как это реализовать наиболее оптимально?
 

SnowB

Guest
Может так:
SELECT p1 FROM `table` WHERE p2 =4 OR p2 =5 GROUP BY p1;
 

SnowB

Guest
The_Koresh
данный запрос вернёт массив с неуникальными значениями, как я понял этого не нужно...

кстати Bor-ka ты не опечатался?
Помоему по твоим условия должен вернуть массив:
P1
1
2
3
 

Bor-ka

Новичок
SnowB
не опечатался, у двойки:
4 | 2 | 2
5 | 2 | 4
6 | 2 | 6
здесь есть только 4-ка, но нет 5-ки, поэтому его не берем (для которых есть в P2 все из заранее определенного множества).
 

SnowB

Guest
Ага...
А если третий раз встречается p1=p2 in (4,5), то записывать в массив? Или только уникальные?
 
Сверху