yes. I do not know how to do it with one query.

On Mar 30, 3:18 pm, Joaquin Orbe <joaquino...@gmail.com> wrote:
> On Sat, Mar 26, 2011 at 6:30 PM, Massimo Di Pierro
>
>
>
>
>
>
>
>
>
> <massimo.dipie...@gmail.com> wrote:
> > You an have a nested select in place of a field.
>
> > I think you want:
> > count = db.sales_order.id.count()
> > query = db.sales_order.VendorID == db.vendor.id
> > rows1 = db(query)
> > (db.sales_order.Status==1).select(db.vendor.id,db.vendor.Name,count)
> > rows2 = db(query)
> > (db.sales_order.Status==2).select(db.vendor.id,db.vendor.Name,count)
> > rows3 = db(query)
> > (db.sales_order.Status==3).select(db.vendor.id,db.vendor.Name,count)
>
> > On Mar 26, 3:57 pm, Joaquin Orbe <joaquino...@gmail.com> wrote:
> >> Hi all,
>
> >> I'm trying to get a result for this query:
>
> >> select vendor.id, vendor.Name,
> >> (select count(*) from sales_order where [Status] = 1 and vendor.id =
> >> sales_order.VendorID),
> >> (select count(*) from sales_order where [Status] = 2 and vendor.id =
> >> sales_order.VendorID),
> >> (select count(*) from sales_order where [Status] = 3 and vendor.id =
> >> sales_order.VendorID)
> >> from vendor
>
> >> and for it I do:
>
> >> countOpen = db((db.sales_order.Status==1)&(db.sales_order.VendorID ==
> >> db.vendor.id)).count()
> >> countProg = db((db.sales_order.Status==2)&(db.sales_order.VendorID ==
> >> db.vendor.id)).count()
> >> countClosed = db((db.sales_order.Status==3)&(db.sales_order.VendorID
> >> == db.vendor.id)).count()
>
> >> rows = db().select(db.vendor.id, 
> >> db.vendor.Name,countOpen,countProg,countClosed)
>
> >> but it's not working because I get
>
> >> (1, vendor1, 1, 4, 1)
> >> (2, vendor2, 1, 4, 1)
>
> >> instead of
>
> >> (1, vendor1, 1, 4, 1)
> >> (2, vendor2, 0, 0, 0)
>
> >> It seems the result of vendor1 is also applied to vendor2 (vendor2
> >> does not have records in sales_order table).
>
> >> Does someone know how to solve it?
>
> >> Thanks in advance,
> >> Joaquin.
>
> Hi Massimo,
> sorry for my late answer.
>
> How should I applied your suggestion? As I can understand, your code
> seems to have three row results, and in my case I need only one. Is it
> correct my understanding?
>
> Thanks,
> Joaquin.

Reply via email to