# Schwere SQL-Abfrage *zwinker*



## Verjigorm (30. Jan 2009)

Hallo,

ich steh grad nen bissl aufm Schlauch, vielleicht kann mir ja jemand kurz bei einer vermutlich  extrem simplen Abfrage helfen:

2 Tabellen:
Spalten Tabelle1: id, a, b, c
Spalten Tabelle2: id, x, y, z

Spalten Endtabelle: id, a, b, c, z

Ich möchte nun ALLE Datensätze aus Tabelle 1
und z von Tabelle2

Und zwar soll Tabelle1.id = Tabelle2.id sein
ABER (hier kommt das Problem) 
wenn eine id aus Tabelle2 NICHT existiert, möchte ich z = null haben.

Ich kriege irgendwie nur alle Einträge, bei denen Tabelle1.id = Tabelle2.id ist
oder ich kriege halt alles mit jedem verknüpft

Danke für die Hilfe! 

mfg Verjigorm


----------



## SlaterB (30. Jan 2009)

select die von Tabelle 1, die von Tabelle 2
from Tabelle 1 LEFT JOIN Tabelle 2
where Tabelle1.id = Tabelle2.id  

LEFT JOIN ist das Stichwort, siehe google/ Lehrbuch


----------



## Verjigorm (30. Jan 2009)

edit: OK, danke ich hab 2mal aufm Schlauch gestanden


----------



## SlaterB (30. Jan 2009)

was wie geht hängt von der Datenbank ab,
und falls es nicht Oracle ist kann ich dazu aktuell nix sagen,
sondern höchstens empfehlen, nach Datenbankname + LEFT JOIN zu googeln zwecks Beispielen

edit: dann eben so


----------



## Verjigorm (30. Jan 2009)

ja danke, edit und posting kamen gleichzeitig,
hatte nen kleinen Denkfehler noch


----------



## ARadauer (30. Jan 2009)

> wenn eine id aus Tabelle2 NICHT existiert, möchte ich z = null haben.



das ist meiner Meinung nach ein left OUTER join!


```
SELECT tab1.a, tab1.b, tab1.c, tab2.z FROM tabelle1 tab1
LEFT OUTER JOINT tabelle2 tab2 ON (tab1.ID = tab2.ID)
```
wenn ich das outer weg lasse, kommen nur die datensätze die in tabelle 1 und 2 vorhanden sind... oder?


----------



## SlaterB (30. Jan 2009)

was wäre dann der Unterschied zwischen LEFT JOIN und normalen JOIN?
Benennungen sind eh Schall und Rauch, es scheint doch geklappt zu haben


----------



## Guest (30. Jan 2009)

ARadauer hat gesagt.:
			
		

> > ...LEFT OUTER *JOINT *
> 
> 
> Hast noch einen über?
> ...


----------

