Guten Morgen zusammen,
ich habe mir am Wochenende über ein Problem den Kopf zerbrochen und möchte euch nun um Hilfe bitten. Es geht um einen Join zweier Tabellen, der nicht das erwartete Ergebnis liefert. Folgende Konstellation:
Tabelle 1 Gutachten (valuations):
gv-test-01=# select id AS val_id, ref_number, ref_name, dt_completition from valuations;
val_id | ref_number | ref_name | dt_completition
--------+------------+-----------------+----------------------------
1 | A-001 | Testgutachten 1 | 2014-04-05 11:17:39.868439
2 | B-001 | Testgutachten 2 | 2014-04-05 11:21:27.365477
3 | A-002 | Testgutachten 3 | 2014-04-05 11:21:35.202647
4 | C-001 | Testgutachten 4 | 2014-04-05 11:21:41.086415
5 | C-002 | Testgutachten 5 | 2014-04-05 16:22:34.090829
(5 rows)
Tabelle 2 Baulasten (public_easements):
gv-test-01=# select id AS pe_id, valuations_id, _public_easements_id from public_easements;
pe_id | valuations_id | _public_easements_id
-------+---------------+----------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 1 | 4
5 | 1 | 5
6 | 2 | 6
7 | 2 | 7
8 | 2 | 8
9 | 2 | 9
10 | 3 | 10
11 | 3 | 11
12 | 3 | 12
13 | 4 | 13
14 | 4 | 14
15 | 5 | 15
(15 rows)
Der Vollständigkeit halber die dritte Tabelle (Stammdaten für die Baulasten):
gv-test-01=# select id AS _pe_id, public_easement from _public_easements;
_pe_id | public_easement
--------+-------------------------
1 | Abstandsbaulast
2 | Altenteil
3 | Auflassungsvormerkung
4 | Bauverbot
5 | Betriebsbeschränkung
6 | Dauernutzungsrecht
7 | Erbbaurecht
8 | Flächenbaulast
9 | Leitungsrecht
10 | NieÃbrauch
11 | Notweg
12 | Reallast
13 | Sanierungsverfahren
14 | Tankstellenrecht
15 | Ãberbau
16 | Umlegungsvermerk
17 | Vorkaufsrecht
18 | Wegerecht
19 | Wohnrecht
20 | Wohnungsbesetzungsrecht
(20 rows)
Ich habe nun folgenden Join, der ein sinnvolles Ergebnis liefert:
gv-test-01=# SELECT
gv-test-01-# valuations.id,
gv-test-01-# valuations.ref_number,
gv-test-01-# valuations.ref_name,
gv-test-01-# valuations.dt_completition
gv-test-01-# FROM
gv-test-01-# public.valuations,
gv-test-01-# public.public_easements
gv-test-01-# WHERE
gv-test-01-# valuations.id = public_easements.valuations_id AND
gv-test-01-# public_easements._public_easements_id = 1
gv-test-01-# GROUP BY
gv-test-01-# valuations.id,
gv-test-01-# valuations.ref_number,
gv-test-01-# valuations.ref_name,
gv-test-01-# valuations.dt_completition;
id | ref_number | ref_name | dt_completition
----+------------+-----------------+----------------------------
1 | A-001 | Testgutachten 1 | 2014-04-05 11:17:39.868439
(1 row)
Dieses Gutachten hat aber noch mehr Baulasten, wenn ich die Abfrage um eine weitere ergänze, finde ich kein Ergebnis mehr:
gv-test-01=# SELECT
gv-test-01-# valuations.id,
gv-test-01-# valuations.ref_number,
gv-test-01-# valuations.ref_name,
gv-test-01-# valuations.dt_completition
gv-test-01-# FROM
gv-test-01-# public.valuations,
gv-test-01-# public.public_easements
gv-test-01-# WHERE
gv-test-01-# valuations.id = public_easements.valuations_id AND
gv-test-01-# public_easements._public_easements_id = 1 AND
gv-test-01-# public_easements._public_easements_id = 2
gv-test-01-# GROUP BY
gv-test-01-# valuations.id,
gv-test-01-# valuations.ref_number,
gv-test-01-# valuations.ref_name,
gv-test-01-# valuations.dt_completition;
id | ref_number | ref_name | dt_completition
----+------------+----------+-----------------
(0 rows)
Nach meinem Verständnis (Wunsch) hätte ich auch das Gutachten mit der ID 1 finden wollen. Könnt ihr mit bitte gedanklich auf die Sprünge helfen.
1000 Dank!
Andreas