Boost logo

Boost :

Subject: Re: [boost] SQL client library ?
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2009-09-16 15:48:55


Jean-Louis Leroy wrote:
> Alp Mestan wrote:
>> You'll then introduce a "condition" DSEL to generate a predicate used
>> by the
>> where without creating like(), between() functions etc ?
>
> Like this :
>
> select((t.id)).from(t).where(t.name.like("pattern"))
>
> select((t1.id, t2.id)).from((t1, t2, p))
> .where((t1.income + t2.income).between(20, 40)
> && p.husband == t1.id && p.wife == t2.id)
>
> Hmm. The double parentheses are needed because the argument separator
> role of the comma has priority over its role as an operator. It may
> become disturbing to have a mixture of cases where double parentheses
> are mandatory and cases where they are not...

I didn't follow the thread but you might consider square brackets instead:

      select[ t1.id, t2.id ].from[ t1, t2, p ]
      .where
      [
         (t1.income + t2.income).between(20, 40)
         && p.husband == t1.id && p.wife == t2.id
      ]


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk