I tried :

WITH posts_tags_cte AS (
        SELECT post_id, array_agg(tag_id) as tags
        FROM posts_tags
        WHERE tag_id in (1, 2)
        GROUP BY post_id
)
SELECT posts.id FROM posts_tags_cte JOIN posts ON posts.id = 
posts_tags_cte.post_id
WHERE posts_tags_cte.tags @> array[1, 2]::int8[]

But it gives me all the posts.


Thanks,

Arup Rakshit
a...@zeit.io



> On 12-Sep-2018, at 9:14 PM, Arup Rakshit <a...@zeit.io> wrote:
> 
> Can you show me the SQL construction? Do I need to use `WITH`?
> 
> 
> Thanks,
> 
> Arup Rakshit
> a...@zeit.io <mailto:a...@zeit.io>
> 
> 
> 
>> On 12-Sep-2018, at 9:13 PM, David G. Johnston <david.g.johns...@gmail.com 
>> <mailto:david.g.johns...@gmail.com>> wrote:
>> 
>> On Wednesday, September 12, 2018, Arup Rakshit <a...@zeit.io 
>> <mailto:a...@zeit.io>> wrote:
>> IN is OR, I want the AND logic. Select posts which has tag 1, 2 and 3 ( tag 
>> ids )
>> 
>> Build arrays and then use the “contains” operator.
>> 
>> David J. 
> 

Reply via email to