<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - UNION]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=1181&amp;type=atom"/>
	<updated>2011-12-12T15:06:40Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=1181</id>
		<entry>
			<title type="html"><![CDATA[Odp: UNION]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3320#p3320"/>
			<content type="html"><![CDATA[[quote=rski]?!
No nie kumam. W pierwszym select'ie wypisujesz wszystkie wiersze z imieniem 'ania' a w drugim liczysz ile jest wszystkich wierszy w tabeli (nie koniecznie z imieniem 'ania')
Gdzie tu logika ?

To było tak na marginesie.

Z drugiej strony jak chcesz uzyć UNION to oba selecty musza zwracac taka sama ilosc kolumn, i typy poszczegolnych kolumn powinny byc zgodne. Pierwszy select wypisuje 3 kolumny, drugi tylko 2 (chyba zapomniales przecinka po COUNT)[/quote]

przecinka zapomniałem to taki przykład był:):) chodzi o to że raport ma liczyć ile wierszy jest danego typu:
ania xińska grupa 1
ania ykowa grupa 2
ania zowa grupa 3
rekorów 3

czyli raport ma dawać informację o tym jakie sa rekordy i ile ich jest.]]></content>
			<author>
				<name><![CDATA[lukaszp]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1315</uri>
			</author>
			<updated>2011-12-12T15:06:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3320#p3320</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: UNION]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3319#p3319"/>
			<content type="html"><![CDATA[Wystarczy ta zwrotka z Admina:) dzięki wielkie za pomoc :) tylko jak wymusić taką metainformację z poziomu zapytania.?]]></content>
			<author>
				<name><![CDATA[lukaszp]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1315</uri>
			</author>
			<updated>2011-12-12T15:01:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3319#p3319</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: UNION]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3313#p3313"/>
			<content type="html"><![CDATA[Rzeczywiście trochę to przekombinowane co chcesz zrobić (raczej tak się nigdy nie robi). Co do Twojej wątpliwości, to wystarczy zajrzeć do [url=http://www.postgresql.org/docs/current/static/sql-select.html#SQL-UNION]dokumentacji Postgres'a[/url] i tam pisze jasno:

[quote]The two SELECT statements that represent the direct operands of the UNION must produce the [b]same number[/b] of columns, and corresponding columns must be of [b]compatible[/b] data types.[/quote]

Być może wystarczałoby Ci to, że psql (czy ew. inne narzędzie jak pgAdmin III) sam z siebie podaje liczbę zwróconych wierszy jako [b]metainformacja[/b], przykładowo masz:

[code]Select imie, nazwisko, grupa FROM tabela_dane WHERE imie = 'Ania';
 imie | nazwisko | grupa 
------+----------+-------
 Ania | Kar      | A+
 Ania | Urman    | A
(2 rows)[/code]

Jeżeli jest to konieczne potrzebne, to wszystko można, wystarczy przy count(*) zrobić rzutowanie na typ tekstowy taki jakiego użyłeś dla kolumny imie, resztę kolumn wstawić puste stringi, czy ew. coś innego + ustawić Order By (dla unii) tak żeby ilość wierszy była na początku:

[code]SELECT imie, nazwisko, grupa FROM tabela_dane WHERE imie = 'Ania'
    UNION
SELECT count(*)::text, '', '' FROM tabela_dane WHERE imie = 'Ania'
    ORDER BY imie;
 imie | nazwisko | grupa 
------+----------+-------
 2    |          | 
 Ania | Kar      | A+
 Ania | Urman    | A
(3 rows)[/code]]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2011-12-08T18:51:20Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3313#p3313</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: UNION]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3312#p3312"/>
			<content type="html"><![CDATA[?!
No nie kumam. W pierwszym select'ie wypisujesz wszystkie wiersze z imieniem 'ania' a w drugim liczysz ile jest wszystkich wierszy w tabeli (nie koniecznie z imieniem 'ania')
Gdzie tu logika ?

To było tak na marginesie.

Z drugiej strony jak chcesz uzyć UNION to oba selecty musza zwracac taka sama ilosc kolumn, i typy poszczegolnych kolumn powinny byc zgodne. Pierwszy select wypisuje 3 kolumny, drugi tylko 2 (chyba zapomniales przecinka po COUNT)]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-12-08T18:33:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3312#p3312</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[UNION]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3311#p3311"/>
			<content type="html"><![CDATA[Witam potrzebuje napisać zapytanie sql w postgre. Mianowicie zapytanie ma listować(jakościowo) dane z tabeli a następnie w pierwszym wierszu wyświetlić ilość wyświetlonych wierszy. coś na wzór:
SELECT
imie,
nazwisko,
grupa
FROM
tabela_dane
WHARE
imie='ania'
UNION
SELECT
COUNT(*)
'',
''
FROM
tabela_dane

generalnie nie działa takie zapytanie i nie zabardzo wiem dlaczego? wyświetla ze typy pół muszą być zgodne?]]></content>
			<author>
				<name><![CDATA[lukaszp]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1315</uri>
			</author>
			<updated>2011-12-08T10:19:59Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3311#p3311</id>
		</entry>
</feed>
