hi, maybe selecting the relevant fields to order-by alongside (next to) the row()'ed part, they will be selected "twice", but you'll be able to reference them.
regards2018-01-14 9:40 GMT-03:00 Andreas Joseph Krogh <andreas@xxxxxxxxxx>:
På søndag 14. januar 2018 kl. 13:30:29, skrev Francisco Olarte <folarte@xxxxxxxxxxxxxx>:Andreas:
On Sun, Jan 14, 2018 at 1:03 PM, Andreas Joseph Krogh
<andreas@xxxxxxxxxx> wrote:
> SELECT q.* FROM (
> SELECT comp.id, comp.name
> FROM company comp JOIN req r ON r.company_id = comp.id
> ORDER BY LOWER(comp.name) ASC
> ) AS q
> ORDER BY r.status ASC
>
> What I'm trying to do here is to order by some status (which may be only 1 of 3 values, for instance OPEN, IN_PROGRESS, CLOSED), then order by company-name so I get results for each status sorted by company-name.
>
> Is this kind of sort stable, can I assume the pre-sorted result's order is preserved so I achieve what I want?
I doubt it is mandated to be stable. But IIRC you can sort by a
non-returned field, so you should be able to do it in just one query (
http://sqlfiddle.com/#!17/aaa62/3 )
I would try
SELECT comp.id, comp.name
FROM company comp JOIN req r ON r.company_id = comp.id
ORDER BY r.status ASC, LOWER(comp.name) ASC
Francisco Olarte.Thanks, but my real query is more complex and I need to sort on a custom coposite type so I think I need an outer query for that, see my post here: http://www.postgresql-archive.org/ORDER-BY-custom- type-td6000437.html Do you see any solution sorting on a composite type without using an outer query?--Andreas Joseph KroghCTO / Partner - Visena ASMobile: +47 909 56 963