2011-02-02 1 views
2

Мой запрос очень похож на этот.Как реализовать этот запрос в mysql

(SELECT emailid FROM usereducation WHERE presfuncarea = '$funcarea') 
intersect 
(SELECT emailid FROM userprofession WHERE totexpyear >= '$minexp') 

Поскольку mysql не поддерживает пересечение, я должен был найти правильное решение. Эксперты plz help

+0

Упс, фигу. Я вижу вещи ... –

+0

wht? не могу понять. это шутка? – Rajasekar

ответ

1

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

SELECT p.emailid 
FROM usereducation e JOIN userprofession p ON p.emailid = e.emailid 
WHERE e.presfuncarea = '$funcarea' 
AND p.totexpyear >= '$minexp' 
+0

, если я хочу присоединиться к другой таблице, означает? ... plz help mate – Rajasekar

0

MySQL поддерживает СУЩЕСТВУЮЩИЕ. Это должно работать:

SELECT UE.emailid 
FROM usereducation AS UE 
WHERE UE.presfuncarea = '$funcarea' 
    AND NOT EXISTS 
    (
    SELECT * FROM userprofession AS UP 
    WHERE UE.emailid = UP.emailID AND UP.totexpyear >= '$minexp' 
    ) 
0

От: http://www.bitbybit.dk/carsten/blog/?p=71

ПЕРЕСЕЧЕНИЕ просто внутреннее соединение, где мы сравним кортежей одной таблицы с данными другой, и выбрать те, которые появляются в обоих во время прополки из дубликатов. Так

SELECT member_id, name FROM a 
INTERSECT 
SELECT member_id, name FROM b 

можно просто переписать

SELECT a.member_id, a.name 
FROM a INNER JOIN b 
USING (member_id, name)