<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=88</link>
		<description><![CDATA[Najświeższe odpowiedzi w pobierz bez powtórzeń dane z tabeli pomijając id.]]></description>
		<lastBuildDate>Fri, 03 Oct 2008 11:39:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=322#p322</link>
			<description><![CDATA[Bardzo dobrze. Użyto takiego rozwiązania wzorując się na:
---------------------------------------------------------------------------------------------------------------------------------------
przykład

SELECT DISTINCT ON ( imie ) imie, * FROM test ORDER BY imie, data DESC

[url]http://153.19.68.222/~aragorn/elephas/faq/faq.html[/url]

select distinct on (typ_operacji) data as ostatnia_data	from operacje      order by typ_operacji desc, data desc;

Tak zadane zapytanie najpierw sortuje wszystkie wiersze tabeli po typie operacji i dacie, a potem wybiera pierwszą napotkaną datę dla każdego typu operacji. Ponieważ jest malejąca kolejność sortowania, to wybierze datę największą.
----------------------------------------------------------------------------------------------------------------------------------------
Zastosowanie u mnie :
Sprawdzenie, ile jest w tabeli rekordów(włącznie z id_k więc wiadomo, że każdy inny więc z  powtórzeniami pozostałych danych:
SELECT COUNT(*) FROM (SELECT DISTINCT  *  FROM ka) T;

Sprawdzenie, ile jest w tabeli rekordów(z wyłączeniem w porównywaniu z id_k) bez powtórzeń:
SELECT COUNT(*) FROM (SELECT DISTINCT ON (nr_k, id_o, data_r) *  FROM ka) T;

Sprawdzenie, ile jest w tabeli rekordów(z wyłączeniem w porównywaniu z id_k i id_o (klucz obcy powtarza się)) bez powtórzeń:
SELECT COUNT(*) FROM (SELECT DISTINCT ON (nr_k, data_r) *  FROM ka) T;

Zatem układam polecenie do pobrania wszystkich (*) danych ale bez uwzględnienia w porównaniu id_k i id_o.

INSERT INTO kaDIST SELECT DISTINCT ON (nr_k, data_r) *  FROM ka;

Z podziękowaniem za natchnienie dla rski]]></description>
			<author><![CDATA[dummy@example.com (r_k2)]]></author>
			<pubDate>Fri, 03 Oct 2008 11:39:22 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=322#p322</guid>
		</item>
		<item>
			<title><![CDATA[Odp: pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=317#p317</link>
			<description><![CDATA[a może użyj 
[code]distinct on(...)[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 02 Oct 2008 16:24:38 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=317#p317</guid>
		</item>
		<item>
			<title><![CDATA[pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=315#p315</link>
			<description><![CDATA[Witam...
Nie mogę zaskoczyć, a problem jest taki...

Jest tabela A, która ma w sobie powielone rekordy (taka sama zawartość wierszy).
Chcę wydobyć z niej i przenieść do tabeli B zawartość ale bez powtórzeń, czyli
jeśli wiersz 1 powtarza się w pozycji 4 ... 8... to powiedzmy, że zadowoli mnie pobranie danych z wiersza 1 a resztę powtórzeń opuszczam.

Umiem pobrać i zapisać dane jeżeli kolumny w tabelach są takie same, ale w tym przypadku w tabeli A występuje kolumna id_osoba (klucz obcy), którą chcę pominąć w porównywaniu identyczności i chcę pominąć kolumnę id_A (primary key) - wiadomo, że z jej uwzględnieniem nie będzie powtórzeń.

.....i co Wy na to?]]></description>
			<author><![CDATA[dummy@example.com (r_k2)]]></author>
			<pubDate>Thu, 02 Oct 2008 08:59:56 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=315#p315</guid>
		</item>
	</channel>
</rss>
