From: | Sam Mason <sam(at)samason(dot)me(dot)uk> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: complicated query (newbie..) |
Date: | 2009-04-09 17:31:46 |
Message-ID: | 20090409173146.GU12225@frubble.xen.chris-lamb.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Thu, Apr 09, 2009 at 07:25:42PM +0200, Marcin Krol wrote:
> Sam Mason wrote:
> >This is a big hint that things are going wrong. You need those quotes
> >in there, an "integer" is a plain number and not a date.
>
> This one does work in the sense of selecting out the wrong host but it
> still produces nothing but NULLs!
Yes, it would do.
> SELECT h.id, r.id, r.start_date, r.end_date
> FROM hosts h
> LEFT JOIN (reservation_hosts m INNER JOIN reservation r
> ON m.reservation_id = r.id
> AND (r.start_date,r.end_date) OVERLAPS ('2009-04-09'::date,'2009-04-10'::date))
The dates here are the date range that you want to give to the user; I
was assuming that just because somebody doesn't have a reservation at
the moment you still don't want to put reservations going backwards and
forwards to infinity.
> ON h.id = m.host_id
> WHERE h.id NOT IN (
> SELECT m.host_id
> FROM reservation r, reservation_hosts m
> WHERE r.id = m.reservation_id
> AND m.host_id IS NOT NULL
> AND (r.start_date,r.end_date) OVERLAPS ('2009-04-09'::date,'2009-04-10'::date)
> ORDER BY h.id, r.start_date)
these dates are OK.
As a minor point, you shouldn't need to put the "::date" in unless
you're feeling pedantic, PG should figure that out for itself. I put
them in if I'm unsure of what's going on but most of my queries won't
have them in.
--
Sam http://samason.me.uk/
From | Date | Subject | |
---|---|---|---|
Next Message | Marcin Krol | 2009-04-09 17:32:48 | Re: complicated query (newbie..) |
Previous Message | Martin Gainty | 2009-04-09 17:27:34 | Re: complicated query (newbie..) |