Article View: pl.comp.bazy-danych
Article #194287Re: PostgreSQL - dziwny błąd składni zapytania
From: irq
Date: Fri, 06 Feb 2015 15:28
Date: Fri, 06 Feb 2015 15:28
19 lines
2811 bytes
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-mailReferences:
<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