From: | Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il> |
---|---|
To: | Hamid Khoshnevis <hamid(at)emarq(dot)com>, pgsql-sql(at)postgreSQL(dot)org |
Subject: | Re: [SQL] Using intersect in subquery |
Date: | 1999-08-18 14:21:39 |
Message-ID: | l03130302b3e070154f3d@[147.233.159.109] |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
At 16:51 +0300 on 18/08/1999, Tom Lane wrote:
> Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> writes:
> > Try 6.5. We fixed some Intersect stuff.
> >>
> >> select * from Table1
> >> where KeyField1 in
> >> (select KeyField2 from Table2 where somecondition
> >> intersect
> >> select KeyField3 from Table3 where somecondition);
> >>
> >> (I believe) I am running PG 6.4. The INTERSECT by itself works, but
>not in
> >> a subquery.
> >>
>
> No, it still won't work --- the current grammar specifies SubSelect not
> select_clause as the kind of select you can put inside an expression.
> Not sure what it would take to fix this; I have a feeling that just
> changing the grammar wouldn't be good enough :-(. Better add it to the
> TODO list:
> * Support UNION/INTERSECT/EXCEPT in sub-selects
In the meantime I suppose changing the query might work. Intersect should
return only the rows which are returned from both tables, but since we are
talking about only one field here, it may be convenient to just do an
internal join?
SELECT * FROM Table1
WHERE KeyField in
( SELECT Keyfield2
FROM Table2, Table3
WHERE Keyfield2 = Keyfield3
);
This is not equivalent in the case of a NULL, but in all other cases, I
believe it is.
Or maybe the following is more efficient (and clear?):
SELECT * FROM Table1
WHERE EXISTS
( SELECT *
FROM Table2
WHERE KeyField2 = KeyField
)
AND EXISTS
( SELECT *
FROM Table3
WHERE KeyField3 = KeyField
);
Herouth
--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 1999-08-18 15:10:38 | Re: [SQL] Using intersect in subquery |
Previous Message | Tom Lane | 1999-08-18 13:51:29 | Re: [SQL] Using intersect in subquery |