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

[ Z ]

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

Есть таблицы

people
--------
id
name


proffession
--------------
id
name


link
----
id
id_people
id_proffession


соответсвенно хранятся люди и их проффесии (умения)
и связаны они через таблицу link

как сделать запрос для получения следующей инфы:
"какие ещё умения есть у людей, которые владеют професией X?"
 

Barlone

Guest
что-то типа
select name from link a,link b,profession where a.id_people=b.id_people and profession.id=b.id_profession and a.id_profession=X and b.id_profession<>X
 

[ Z ]

Новичок
До этого я дошёл, а как выбрать Какими проффесиями владеют люди, которые владеют и профессией Х и У?
 

mahoune

Guest
Ну как-тот так!

SELECT *
FROM people a, proffession b, link c, proffession z, link y,
WHERE
b.proffession=X
AND
c.id_proffession=b.id
AND
a.id=c.id_people
AND
y.id_people=a.id
AND
z.id=y.id_proffession
 

Barlone

Guest
Автор оригинала: [ Z ]
До этого я дошёл, а как выбрать Какими проффесиями владеют люди, которые владеют и профессией Х и У?
Попробуем модифицировать:

select name from link a,link b,link c,profession where a.id_people=b.id_people and b.id_people=c.id_people and profession.id=c.id_profession and a.id_profession=X and b.id_profession=Y and c.id_profession not in (X,Y)

Только не уверен, что нигде не напутал. И еще, скорее всего тормозить будет, даже при наличии всех необходимых индексов (по крайней мере, когда я пытался делать запросы с объединением более 3 таблиц, ничего хорошего добиться так и не смог - упрощать запросы пришлось и логоку работы менять)
 
Сверху