På søndag 14. januar 2018 kl. 13:30:29, skrev Francisco Olarte <
fola...@peoplecall.com <mailto:fola...@peoplecall.com>>:
Andreas:

 On Sun, Jan 14, 2018 at 1:03 PM, Andreas Joseph Krogh
 <andr...@visena.com> 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 Krogh
CTO / Partner - Visena AS
Mobile: +47 909 56 963
andr...@visena.com <mailto:andr...@visena.com>
www.visena.com <https://www.visena.com>
 <https://www.visena.com>


 

Reply via email to