Dear Maryann, Thanks for your question. You are right: the query that I was writing wasn't the correct one for my purpose. The query that will satisfy my request would be:
select distinct W."rowId", W."md5_current", W."size_current" from "Wiki" AS W where EXISTS (select * from "History" AS H where (H."rowId" = W."rowId") AND H."timestamp" = (select MAX(H2."timestamp") from "History" AS H2 where (H2."rowId" = W."rowId")) AND (H."status" = 'approved') ) In this query I specify that I need to select the exact version which has the Maximum timestamp among all versions of the same data item by using MAX(H2."timestamp") within the inner subquery within EXISTS. However I tried such query and it still produces the same error as the old query, which is: (Aggregate may not contain columns not in GROUP BY.) Thank you for your help. Best, Khaleel On Thu, Apr 23, 2015 at 5:49 PM, Maryann Xue <maryann....@gmail.com> wrote: > Hi Khaleel, > > Thanks for the explanation! But my question was since this is an EXISTS, I > assume if there ever is a H."timestamp" with an 'approved' status, the > EXISTS will return true regardless of whether you are testing H."timestamp" > or Max(H."timestamp"). Is that correct? or have I missed something? > > > Thanks, > Maryann > > On Thu, Apr 23, 2015 at 8:49 AM, khaleel mershad <khellom...@gmail.com> > wrote: > >> >> Hello Maryann, >> >> Thanks very much for your reply. Hopefully this bug gets fixed in the >> next release so that I can continue working with this part in my research >> project. Thanks for keeping me posted. >> >> With respect to your question, I am using the "History" table as a data >> store of all versions of a certain data item. When I say Max( >> H."timestamp") inside the query, I am selecting the latest version (most >> recent) that is "approved" (which is checked using the condition H."status" >> = 'approved') >> >> >> >> Best Regards, >> Khaleel >> >> On Thu, Apr 23, 2015 at 6:22 AM, Maryann Xue <maryann....@gmail.com> >> wrote: >> >>> Hi Khaleel, >>> >>> Thanks a lot for reporting the problem, which looks like a bug. I will >>> file a JIRA and keep you posted. >>> >>> One question though, why would we use MAX(H."timestamp") instead of >>> H."timestamp"? >>> What difference would it make? >>> >>> >>> Thanks, >>> Maryann >>> >>> On Wed, Apr 22, 2015 at 9:45 AM, khaleel mershad <khellom...@gmail.com> >>> wrote: >>> >>>> >>>> Hello, >>>> >>>> I tried executing the following query in Phoenix: >>>> select distinct W."rowId", W."md5_current", W."size_current" from >>>> "Wiki" AS W where EXISTS( select MAX(H."timestamp") from "History" AS H >>>> where (H."rowId" = W."rowId") AND (H."status" = 'approved') ); >>>> >>>> I got the following error: >>>> ERROR 1018 (42Y27): Aggregate may not contain columns not in GROUP BY. >>>> (state=42Y27,code=1018) >>>> >>>> If I replace W."rowId" (in the where clause) with a constant value (for >>>> example: '3587'), the query works fine. Also, if I replace the aggregate >>>> MAX(H."timestamp") with H."timestamp", the query also works fine. >>>> >>>> So it seems that Phoenix generates error when using a reference to an >>>> outer query while using an aggregate within the inner query. >>>> >>>> Any solutions? >>>> >>>> >>>> >>>> Regards, >>>> >>>> Khaleel Mershad, Ph.D. >>>> Research Associate >>>> >>>> American University of Beirut >>>> Department of Electrical and Computer Engineering >>>> Bliss Street, Beirut, Lebanon >>>> email: kw...@aub.edu.lb >>>> >>> >>> >> >