<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Coś w stylu negacji Inner Joina]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=2232&amp;type=atom"/>
	<updated>2014-10-29T15:41:55Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=2232</id>
		<entry>
			<title type="html"><![CDATA[Odp: Coś w stylu negacji Inner Joina]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5371#p5371"/>
			<content type="html"><![CDATA[Po prostu poczytaj w dowolnej książce o SQL-u o złączeniach
Masz złączenie typu:
Inner join - złączenie następuje gdy wartości/warunek logiczny są spełnione w obu tebelach 
Left join - złączenie chroni tabelę po lewej stronie czyli wyświetli wszystkie wartości z tabeli po lewej stronie nawet jesli nie znajdzie wartości ich odpowiedników w tabeli po prawej stronie 
Right join - chroniona jest tabela po prawej stronie (czytaj opis do left join-a)
full join - chronione są wartości z obu tabel

Przykład (koniecznie sam poeksperymentuj zmieniając typ złączenia):
With tab1 as (values (1,'a'),(3,'c')),
     tab2 as (values (1,'odpowiednik a'),(2,'odpowiednik b'))
select tab1.*, tab2.*
from tab1 as tab1 (id,nazwa) 
full join tab2 as tab2 (id,nazwa) on tab1.id=tab2.id;]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2014-10-29T15:41:55Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5371#p5371</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Coś w stylu negacji Inner Joina]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5370#p5370"/>
			<content type="html"><![CDATA[Witam.
Mam pewien temat który nie wiem za bardzo jak ugryźć, tak kombinuję, może Wy coś podpowiecie. A mianowicie tworzę sobie w bazie tabelę która jest zlepkiem dwóch innych tabel. Wykonuję INNER JOIN-a po numerze_ident. W obu tabelach które join-uje ten numer jest unikalny. I ok, tabelę utworzyłem, wszystko super. Ale mam kilka numerów identyfikacyjnych w tabeli pierwszej które nie występują w tabeli drugiej więc siłą rzeczy w tabeli wynikowej zostaną one pominięte. I teraz co chcę zrobić. Dodałem sobie do zapytania tworzącego mi tabelę wynikową dodatkową kolumnę gdzie wrzucam flagę 'true' i 'false'. I w te wiersze które pomyślnie mi połączył czyli numer ident występował i w jednej i drugiej tabeli wrzucam na końcu flagę 'true'. Następnie chcę wykonać update na tej tabeli wynikowej który zaktualizuje mi ją o te wiersze gdzie ten numer ident występował wyłącznie w pierwszej tabeli a w drugiej nie i na końcu wstawi mi flagę 'false'. Jak myślicie, czy to co opisałem jest wykonalne w jakiś nie skomplikowany sposób?]]></content>
			<author>
				<name><![CDATA[peter]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=2116</uri>
			</author>
			<updated>2014-10-29T15:17:53Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5370#p5370</id>
		</entry>
</feed>
