<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - pokaż rekordy z A nie powiązane z B(do usunięcia)]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=94&amp;type=atom"/>
	<updated>2008-10-10T07:43:51Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=94</id>
		<entry>
			<title type="html"><![CDATA[Odp: pokaż rekordy z A nie powiązane z B(do usunięcia)]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=342#p342"/>
			<content type="html"><![CDATA[Fajny pomysł na to jest tu [url]http://forum.php.pl/lofiversion/index.php/t14296.html[/url]
--------------------------------------------------------------------------------------------------------------
Podane tam przykłady:
SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2); 

SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE t1.id=t2.id); 

Can be rewritten as: 

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;
---------------------------------------------------------------------------------------------------------------

Wybieram do sprawdzenia ten ostatni w postaci:
SELECT COUNT (A.id_o) FROM A LEFT JOIN B ON A.id_o = B.id_o WHERE B.id_o IS NULL;

i wynik otrzymuję po kilku sekundach zgodny z oczekiwaną wartością.]]></content>
			<author>
				<name><![CDATA[r_k2]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=341</uri>
			</author>
			<updated>2008-10-10T07:43:51Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=342#p342</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[pokaż rekordy z A nie powiązane z B(do usunięcia)]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=334#p334"/>
			<content type="html"><![CDATA[Witam...
Szukam lepszego rozwiązania. Problem: 
Rekordy w tabeli B są powiązane (mają w sobie klucz obcy będący kluczem prywatnym w tabeli A) z tabelą A.
Inaczej tabela A ma poszerzone informacje w tabeli B.
Jednak nie wszystkie rekordy w tabeli A mają te powiązania z tabelą B i te chcę wyłowić.

SELECT id_A FROM A WHERE id_A NOT IN (SELECT id_A FROM B) LIMIT 3;

To pytanie dla ok. 150000 w A i ok.300000 w B wykonuje sie ok. 3 min.
ale dla całości po godzinie nadal brak wyniku dla zmodyfikowanej wersji tego pytania:

SELECT COUNT (*) FROM A WHERE id_A NOT IN (SELECT id_A FROM B);

Co prawda mogę się dokopać do wyniku od jakby drugiej strony (od całości A odjąć poniższy wynik):
SELECT COUNT (*) FROM (SELECT DISTINCT A.* FROM A , B WHERE A.id_A = B.id_A) T;

Ale ja w efekcie chcę usunąć te niepowiązane rekordy z A więc jak je wyłowić?]]></content>
			<author>
				<name><![CDATA[r_k2]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=341</uri>
			</author>
			<updated>2008-10-09T05:31:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=334#p334</id>
		</entry>
</feed>
