2011-02-02 2 views
2

Ma requête est très similaire à ceci.Comment implémenter cette requête dans mysql

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

Puisque mysql ne supporte pas l'intersection, j'ai dû trouver la bonne solution. Experts plz help

+0

HUÉES, tant pis. Je vois des choses ... –

+0

wht? Je ne peux pas comprendre. c'est cette blague? – Rajasekar

Répondre

1

Cela devrait faire le travail:

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

si je veux rejoindre une autre table signifie? ... plz help mate – Rajasekar

0

MySQL prend en charge EXISTS. Cela devrait fonctionner:

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

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

Un INTERSECT est tout simplement une jointure interne où l'on compare les tuples d'une table avec ceux de l'autre, et sélectionnez ceux qui apparaissent à la fois en sarclage sur les doublons. Alors

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

peut simplement être réécrite à

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