<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - SELECT, wiele tabel, group by]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=553</link>
		<description><![CDATA[Najświeższe odpowiedzi w SELECT, wiele tabel, group by.]]></description>
		<lastBuildDate>Mon, 02 May 2011 09:04:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: SELECT, wiele tabel, group by]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2497#p2497</link>
			<description><![CDATA[[quote]
(znalezione gdzieś na jakimś forum, nie w dokumentacji)
[/quote]

Żeby nie było, w dokumentacji też jest to opisane:
"
In general, if a table is grouped, columns that are not listed in GROUP BY cannot be referenced except in aggregate expressions.
"]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 02 May 2011 09:04:50 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2497#p2497</guid>
		</item>
		<item>
			<title><![CDATA[SELECT, wiele tabel, group by]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2413#p2413</link>
			<description><![CDATA[Jako, że znam w tej chwili głównie mysql - zdarzają mi się dziwne wpadki...

Mam zapytanie mysql:
[code]
SELECT e.nazwa, p.child_id, sum(p.ma), sum(p.winien) 
FROM payment p, elements e
WHERE e.id = p.child_id
GROUP BY p.child_id
[/code]
(pobiera ~390tys wyników w ~45s, indexy tylko na elementach "id", tabela elements: ~460tys wierszy, payment: ~1.170mln)

Jak to zamienić na zapytanie do postgresql?
Wykonanie tego zapytania w postgresql (pgadminIII).
[code]
ERROR:  column "e.nazwa" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT e.nazwa, p.child_id, sum(p.ma), sum(p.winien) 
               ^


********** Błąd **********

ERROR: column "e.nazwa" must appear in the GROUP BY clause or be used in an aggregate function
Stan SQL:42803
Znak:8

[/code]

Nie mogę dodać e.nazwa do group by - tam będą przechowywane imiona/nazwiska. Całe zapytanie dotyczy testowej bazy, aby sprawdzić ile różni się wydajność mysql/postgresql, oraz czy jest sens, żebym zabierał się za postgresa, jak mam limit czasowy i o ile nieznajomość tematu będzie mnie opóźniać.

---edit---
Ok, w group by musi być wpisany każdy element który jest przy select (znalezione gdzieś na jakimś forum, nie w dokumentacji). Dodatkowo w sumie group by id jest główne - a id jest unikalne, więc group by wszystkie elementy/group by id jest równoważne (chyba? Grypę mam mogę czegoś nie zrozumieć).]]></description>
			<author><![CDATA[dummy@example.com (aleextra)]]></author>
			<pubDate>Sun, 06 Mar 2011 09:53:53 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2413#p2413</guid>
		</item>
	</channel>
</rss>
