Re: limiting a select
| От | Oliver Elphick |
|---|---|
| Тема | Re: limiting a select |
| Дата | |
| Msg-id | 1025895395.31483.54.camel@linda обсуждение исходный текст |
| Ответ на | limiting a select (Chris Thompson <thompson@ednet.co.uk>) |
| Список | pgsql-novice |
On Thu, 2002-07-04 at 18:35, Chris Thompson wrote:
>
> Hi,
> I am using the following query
>
> $query = "SELECT id, title, type, SUBSTRING(description FOR $description_size) as description, ";
> $query .= "date, display_date ";
> $query .= "FROM events WHERE active='t' ";
> $query .= "ORDER BY date ASC;";
>
> I was wondering if someone could give me a hint on how to alter this to
> only return 9 results, of which there will, if available, be up to 3 of
> each 'type' of event.
>
> There are 3 possible values for the type column (text) in the db.
You can use the LIMIT keyword to limit results. It sounds as though you
need to use it 3 times, once for each type, and make a union of the 3
selects. I think they have to be subselects to let you use LIMIT on
each one:
SELECT *
FROM (SELECT id, title, type,
SUBSTRING(description FOR $description_size) AS description,
date, display_date
FROM events
WHERE active='t' AND
type = 'X' -- edit this for type 1
ORDER BY date ASC
LIMIT 3) AS x
UNION
SELECT *
FROM (SELECT id, title, type,
SUBSTRING(description FOR $description_size) AS description,
date, display_date
FROM events
WHERE active='t' AND
type = 'Y' -- edit this for type 2
ORDER BY date ASC
LIMIT 3) AS y
UNION
SELECT *
FROM (SELECT id, title, type,
SUBSTRING(description FOR $description_size) AS description,
date, display_date
FROM events
WHERE active='t' AND
type = 'Z' -- edit this for type 3
ORDER BY date ASC
LIMIT 3) AS z
ORDER BY date ASC;
В списке pgsql-novice по дате отправления: