<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=88&amp;type=atom"/>
	<updated>2008-10-03T11:39:22Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=88</id>
		<entry>
			<title type="html"><![CDATA[Odp: pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=322#p322"/>
			<content type="html"><![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]]></content>
			<author>
				<name><![CDATA[r_k2]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=341</uri>
			</author>
			<updated>2008-10-03T11:39:22Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=322#p322</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=317#p317"/>
			<content type="html"><![CDATA[a może użyj 
[code]distinct on(...)[/code]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2008-10-02T16:24:38Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=317#p317</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[pobierz bez powtórzeń dane z tabeli pomijając id]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=315#p315"/>
			<content type="html"><![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?]]></content>
			<author>
				<name><![CDATA[r_k2]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=341</uri>
			</author>
			<updated>2008-10-02T08:59:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=315#p315</id>
		</entry>
</feed>
