Return-Path: Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: (qmail 49657 invoked from network); 17 Sep 2010 13:57:06 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 17 Sep 2010 13:57:06 -0000 Received: (qmail 28709 invoked by uid 500); 17 Sep 2010 13:57:05 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 27602 invoked by uid 500); 17 Sep 2010 13:57:00 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 27591 invoked by uid 99); 17 Sep 2010 13:56:58 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 Sep 2010 13:56:58 +0000 X-ASF-Spam-Status: No, hits=2.9 required=10.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [74.125.82.42] (HELO mail-ww0-f42.google.com) (74.125.82.42) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 Sep 2010 13:56:54 +0000 Received: by wwb31 with SMTP id 31so930120wwb.5 for ; Fri, 17 Sep 2010 06:56:32 -0700 (PDT) MIME-Version: 1.0 Received: by 10.227.138.141 with SMTP id a13mr4117329wbu.208.1284731792326; Fri, 17 Sep 2010 06:56:32 -0700 (PDT) Received: by 10.227.135.196 with HTTP; Fri, 17 Sep 2010 06:56:32 -0700 (PDT) In-Reply-To: References: Date: Fri, 17 Sep 2010 06:56:32 -0700 Message-ID: Subject: Re: Conditional joins From: Kenneth Tyler To: user@couchdb.apache.org Content-Type: multipart/alternative; boundary=00163646bb321d0031049074eeb4 --00163646bb321d0031049074eeb4 Content-Type: text/plain; charset=ISO-8859-1 Simon, I think this is a case where the flat document structure of couch documents makes things much simpler than in SQL. If you had a view like this: function(doc){if(doc.type=='user'){emit(doc.status,doc)} then it would return all the user documents with their status as their key and you could use ?key="1" (i think the quotes are necessary) to get all the users whose status is 1 if you want to do the same thing for domains, you just write a "domain" view that returns status as the key ken tyler On Fri, Sep 17, 2010 at 6:04 AM, Simon Woodhead wrote: > Hi folks, > > I'm pretty green with views and have a need to do a join with results > from one side returned if a condition is met on the other. In SQL I'd > do: > > select * from child join parent on child.id=parent.id where > parent.status=1; > > I've read the 'join' documentation (e.g. > http://www.cmlenz.net/archives/2007/10/couchdb-joins) and can return > documents of multiple types with matching keys ok. What I can't do is > do the same but only if the parent matches a condition. > > Specifically, my data is like: > > > {"45a6951b34a6f45bd44fd169c0003f9c","_rev":"1-6c88818b43d562c45e452bf00db06ee2","type":"domain","domain":" > test.com","status":1}, > > {"_id":"45a6951b34a6f45bd44fd169c00046db","_rev":"1-37eaf0c4944dac9f5fe07b25c0b68b1d","type":"domain","domain":" > test2.com","status":0}, > > {"_id":"45a6951b34a6f45bd44fd169c00053d9","_rev":"3-729f46c86ee4984941939c65787126fb","type":"user","domain":" > test.com","user":"foo","password":"test123"}, > > {"_id":"45a6951b34a6f45bd44fd169c00060c8","_rev":"1-46997eba12e7adbb6e9266a1fe83c42d","type":"user","domain":" > test2.com","user":"bar","password":"test123"} > > I want to be be able to query a view by domain and see all users for > it if the status is 1. So in this case I'd see users for test.com but > not for test2.com. > Any help would be appreciated. > > Thanks! > Simon > -- > ***** Email confidentiality notice ***** > > This message is private and confidential. If you have received this message > in error, please notify us and remove it from your system. > > > Simwood eSMS Limited is a limited company registered in England and Wales. > Registered number: 03379831. Registered office: c/o HW Chartered > Accountants, Keepers Lane, The Wergs, Wolverhampton, WV6 8UA. Trading > address: Falcon Drive, Cardiff Bay, Cardiff, CF10 4RU. > > > --00163646bb321d0031049074eeb4--