<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - SELECT, wiele tabel, group by]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=553&amp;type=atom"/>
	<updated>2011-05-02T09:04:50Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=553</id>
		<entry>
			<title type="html"><![CDATA[Odp: SELECT, wiele tabel, group by]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2497#p2497"/>
			<content type="html"><![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.
"]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-05-02T09:04:50Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2497#p2497</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[SELECT, wiele tabel, group by]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2413#p2413"/>
			<content type="html"><![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ć).]]></content>
			<author>
				<name><![CDATA[aleextra]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1204</uri>
			</author>
			<updated>2011-03-06T09:53:53Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2413#p2413</id>
		</entry>
</feed>
