🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #194287

Re: PostgreSQL - dziwny błąd składni zapytania

#194287
From: irq
Date: Fri, 06 Feb 2015 15:28
19 lines
2811 bytes
W dniu piątek, 6 lutego 2015 14:40:00 UTC+1 użytkownik Marek napisał:
> 
> Jednakże nadal nie rozumiem czemu w UNION ALL nie można stosować w 
> składowych zapytaniach sekcji ORDER BY.
> 
> -- 
> Pozdrawiam,
> Marek

... bo UNION nie gwarantuje zachowania kolejności wierszy poszczególnych składników, tak jak, co do zasady, relacyjna baza danych jest zwolniona z dbania o jakikolwiek porządek elementów przechowywanych obiektów.

ORDER BY służy jedynie to finalnego porządkowania wyników całego zapytania. Ma to odzwierciedlenie w syntaksie: http://www.postgresql.org/docs/9.4/static/sql-select.html, gdzie [ORDER BY ... ] występuje po [ ... UNION ... ].

Tak więc jeżeli nawet opakujesz składnik unii w podzapytanie i wymusisz jego posortowanie, tak jak pokazałeś jako przypadek "działający", to i tak efekt tego sortowania zostanie zniszczony przez UNION (a przynajmniej nie ma gwarancji jego niezniszczenia).

Z powyższego wynika również, że i ORDER BY zastosowany poprawnie za całą unią, ale nadal w obrębie CTE, nadal nie na wiele się przyda, bo analogicznie, nie ma gwarancji co do tego w jakim porządku zostanie zwrócony wynik tego CTE przez zewnętrzny SELECT group_id FROM is_child. 

Dlatego, jeżeli już musisz tu cokolwiek posortować i nie ma w tym dodatkowego ukrytego zamiaru, potrzebujesz napisać:
WITH ... is_child ... AS (...) SELECT group_id FROM is_child ORDER BY 1.
Technical Details
Message-ID: <3b7e9e8f-a32d-4718-b91c-2fe350f9d457@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!peer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!hl2no10751361igb.0!news-out.google.com!q4ni11076qan.0!nntp.google.com!v8no6996910qal.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <mb2588$m86$1@news.icm.edu.pl> <mb2g7f$isp$2@news.icm.edu.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.43.153.3 with SMTP id ky3mr11710508icc.5.1423236528390;        Fri, 06 Feb 2015 07:28:48 -0800 (PST)
X-Received: by 10.140.89.84 with SMTP id u78mr43099qgd.10.1423236528356; Fri, 06 Feb 2015 07:28:48 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!peer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!hl2no10751361igb.0!news-out.google.com!q4ni11076qan.0!nntp.google.com!v8no6996910qal.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.bazy-danych
Date: Fri, 6 Feb 2015 07:28:48 -0800 (PST)
In-Reply-To: <mb2g7f$isp$2@news.icm.edu.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.144.96.35; posting-account=HsGcpQoAAABR8eqXdcgZHaZMq6uPUZY5
NNTP-Posting-Host: 83.144.96.35
References: <mb2588$m86$1@news.icm.edu.pl> <mb2g7f$isp$2@news.icm.edu.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3b7e9e8f-a32d-4718-b91c-2fe350f9d457@googlegroups.com>
Subject: Re: PostgreSQL - dziwny błąd składni
 zapytania
From: irq <ipluta62@gmail.com>
Injection-Date: Fri, 06 Feb 2015 15:28:48 +0000
X-Received-Bytes: 2716
X-Received-Body-CRC: 3394948893
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit