<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - złączenie tabel: występuje - nie występuje]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=1360</link>
		<description><![CDATA[Najświeższe odpowiedzi w złączenie tabel: występuje - nie występuje.]]></description>
		<lastBuildDate>Wed, 11 Jul 2012 07:51:00 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: złączenie tabel: występuje - nie występuje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3665#p3665</link>
			<description><![CDATA[Pisałem wczoraj na szybko i popełniłem błąd - ma być po wykonaniu i założeniu - wczoraj nie miałem już dostępu do neta żeby to naprostować.
Przy wstawianiu danych niepotrzebnie użyłem wszystkich id_zad (usuń z pierszej tabeli pierwsze 2 i z drugiej ostatnie 2)
[code]
insert into zalozenie values (1,3);
insert into zalozenie values (2,4);
insert into zalozenie values (3,5);
insert into zalozenie values (4,6);

insert into wykonanie values (1,5);
insert into wykonanie values (2,6);
insert into wykonanie values (3,7);
insert into wykonanie values (4,8);
[/code]
teraz mamy 8 przypadków użycia id_zad - wszystkich w zadaniach jest 10
czyli wynik powinien wyglądać tak:
id_zad | zalozenie | wykonanie
3 | t | f
4 | t | f
5 | t | t
6 | t | t
7 | f | t
8 | f | t

brane są pod uwagę tylko te id_zad, które występują w tych dwóch tabelach: założenie + wykonanie


dopisałem na końcu twojego zapytania:
[code]where exists(select 1 from wykonanie where id_zad=z.id_zad) or exists(select 1 from zalozenie where id_zad=z.id_zad)[/code] i wynik jest poprawny.

Dzięki.]]></description>
			<author><![CDATA[dummy@example.com (przesq)]]></author>
			<pubDate>Wed, 11 Jul 2012 07:51:00 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3665#p3665</guid>
		</item>
		<item>
			<title><![CDATA[Odp: złączenie tabel: występuje - nie występuje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3663#p3663</link>
			<description><![CDATA[Trochę nie jasny ten opis, bo jeśli pójdę po tabeli 'wykonanie' to nie jestem wstanie sprawdzić warunku "[b]nie występuje w wykonanie[/b] - występuje w zalozenie" bo do dyspozycji mam tylko id zadania które są w wykonanie, to samo jeśli pójdę po tabeli 'zalozenie' ale wtedy nie jestem wstanie sprawdzić warunku "występuje w wykonanie - [b]nie występuje w zalozenie[/b]"

Musisz chyba coś jeszcze napisać o swoim projekcie. A tak z ciekawości dlaczego jeśli chcesz iść po tabeli wykonania do powyższego select-a nie dopiszesz warunku [b]WHERE exists(select 1 from wykonanie where id_zad=z.id_zad)[/b]]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Tue, 10 Jul 2012 20:37:35 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3663#p3663</guid>
		</item>
		<item>
			<title><![CDATA[Odp: złączenie tabel: występuje - nie występuje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3662#p3662</link>
			<description><![CDATA[nie napisałem, że tabela zadania ma blisko 2000 rekordów i ta lista musi być względem wykonania - gdyż w tej tabeli będzie ok 200 rekordów, w założeniu ok 300 więc potrzebuję sprawdzać względem wykonania.
w tym zapytaniu zwraca mi wszystkie zadania a potrzebuję wg założeń.]]></description>
			<author><![CDATA[dummy@example.com (przesq)]]></author>
			<pubDate>Tue, 10 Jul 2012 10:22:39 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3662#p3662</guid>
		</item>
		<item>
			<title><![CDATA[Odp: złączenie tabel: występuje - nie występuje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3661#p3661</link>
			<description><![CDATA[Może tak:
select z.*
,exists(select 1 from wykonanie where id_zad=z.id_zad) and not exists(select 1 from zalozenie where id_zad=z.id_zad) as "występuje w wykonanie - nie występuje w zalozenie"
,exists(select 1 from wykonanie where id_zad=z.id_zad) and exists(select 1 from zalozenie where id_zad=z.id_zad) as "występuje w wykonanie - występuje w zalozenie"
,not exists(select 1 from wykonanie where id_zad=z.id_zad) and exists(select 1 from zalozenie where id_zad=z.id_zad) as "nie występuje w wykonanie - występuje w zalozenie"
from zadania z]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Tue, 10 Jul 2012 09:21:41 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3661#p3661</guid>
		</item>
		<item>
			<title><![CDATA[złączenie tabel: występuje - nie występuje]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=3660#p3660</link>
			<description><![CDATA[mam 3 przykładowe tabele
[code]
CREATE TABLE zadania (
  id_zad serial NOT NULL,
  zadanie character varying(30)
);

insert into zadania values (1,'test1');
insert into zadania values (2,'test2');
insert into zadania values (3,'test3');
insert into zadania values (4,'test4');
insert into zadania values (5,'test5');
insert into zadania values (6,'test6');
insert into zadania values (7,'test7');
insert into zadania values (8,'test8');
insert into zadania values (9,'test9');
insert into zadania values (10,'test10');

CREATE TABLE zalozenie (
  id_zal serial NOT NULL,
  id_zad integer NOT NULL
);

insert into zalozenie values (1,1);
insert into zalozenie values (2,2);
insert into zalozenie values (3,3);
insert into zalozenie values (4,4);
insert into zalozenie values (5,5);
insert into zalozenie values (6,6);

CREATE TABLE wykonanie (
  id_wyk serial NOT NULL,
  id_zad integer NOT NULL
);

insert into wykonanie values (1,5);
insert into wykonanie values (2,6);
insert into wykonanie values (3,7);
insert into wykonanie values (4,8);
insert into wykonanie values (5,9);
insert into wykonanie values (6,10);
[/code]

Potrzebuję złączyć te tabele po id_zad tak aby wykazać 3 warianty w jednym zapytaniu: 
występuje w wykonanie - nie występuje w zalozenie
występuje w wykonanie - występuje w zalozenie
nie występuje w wykonanie - występuje w zalozenie

w trzech zapytaniach to wiem jak zrobić, ale może jest sposób zrobić to w jednym zapytaniu.]]></description>
			<author><![CDATA[dummy@example.com (przesq)]]></author>
			<pubDate>Tue, 10 Jul 2012 06:57:04 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=3660#p3660</guid>
		</item>
	</channel>
</rss>
