Database Reference
In-Depth Information
Zurück zu unserem zusammengesetzten Join. Der Join der
venues
-Tabelle
mit der
cities
-Tabelle verlangt
beide
Fremdschlüssel. Um uns etwas Schreib-
arbeit zu ersparen, können wir für den Tabellennamen einen Alias festlegen,
indem wir ihn direkt auf den Tabellennamen folgen lassen, wobei wir optional
ein
AS
dazwischen setzen können (also beispielsweise
venues v
oder
venues
AS v
).
SELECT
v.venue
_
id, v.name, c.name
FROM
venues v
INNER JOIN
cities c
ON
v.postal
_
code=c.postal
_
code
AND
v.country
_
code=c.country
_
code;
venue
_
id | name | name
----------+------------------+----------
1 | Crystal Ballroom | Portland
Optional können Sie bei PostgreSQL die Spalten festlegen, die nach einer
Insert-Operation zurückgeliefert werden sollen, indem Sie die Query mit einer
RETURNING
-Anweisung abschließen.
INSERT INTO
venues (name, postal
_
code, country
_
code)
VALUES
(
'Voodoo Donuts'
,
'97205'
,
'us'
) RETURNING venue
_
id;
id
----
2
Das liefert ohne eine zusätzliche Abfrage die neue
venue
_
id
zurück.
Äußere Joins
Neben inneren Joins kann PostgreSQL auch sog.
äußere Joins (outer joins)
durchführen. Äußere Joins sind eine Möglichkeit, zwei Tabellen zu ver-
schmelzen, wenn das Ergebnis einer Tabelle immer zurückgegeben werden
muss, unabhängig davon, ob es einen passenden Spaltenwert in der anderen
Tabelle gibt.
Das erklärt man am einfachsten mit einem Beispiel, doch zu diesem Zweck
müssen wir eine neue Tabelle namens
events
anlegen. Das ist genau die
richtige ÜbungfürSie.Die
events
-Tabelle soll die folgenden Spalten besit-
zen: eine fortlaufende (
SERIAL
) ganzzahlige
event
_
id
,einenTitel(
title
), An-
fang (
starts
)undEnde(
ends
)(vomTyp
timestamp
) und eine
venue
_
id
(ein
venues
referenzierender Fremdschlüssel). Ein Schema-Definitionsdiagramm
aller bisher behandelten Tabellen sehen Sie in Abbildung 2,
Das Entity-Rela-
tionship-Diagramm (ERD)
, auf Seite 19.