Select über mehrere Tabellen

19/02/2008 - 00:58 von Josef Koller | Report spam
Hallo,

ich habe vier Tabellen. Folgender Aufbau:
Tabelle1:
ID
Name

Tabelle 2:
ID
FOR_ID
Nummer
...

Tabelle3
ID
FOR_ID
Mutter
...

Tabelle 4
ID
FOR_ID
Datum
...

In Tabelle 1 würde stehen:
ID =1
Name = Müller
ID =2
Name = Meier

In Tabelle 2
würde stehen
ID =1
FOR_ID =1
Nummer =1
ID=2
For_ID =2
Nummer =2

Tabelle 3
ID =1
FOR_ID =1
Mutter = 'XXXX'
ID =2
FOR_ID =1
Mutter = 'YYYY'

Tabelle 4
ID =1
FOR_ID =2
Datum: 12.12.1212
ID = 2
FOR_ID =2
Datum: 24.12.1212

Als Ergebnis sollten 2 Datensàtze rauskommen:
Die zwei Datensàtze aus Tabelle 1 und Tabelle 2.

Bei der Tabelle 3 sollten die Werte aus der höchsten(neuesten) ID
dazukommen, also der Satz mit der ID = 2 und dann aus der Tabelle 4 der Satz
mit dem neuesten Datum,also ID =2 (24.12.1212).

Also so:
Müller(Name),1(Nummer),'YYYY(Mutter),24.12.1212(Datum)
Meier(Name),2(Nummer),

Ich hab's mal so und so àhnlich probiert:

select distinct s.*,n.*,z.*,k.*
from TB_Tabelle1 s, TB_Tabelle2 n, TB_Tabelle3 z, TB_Tabelle4 k where
n.for_id = s.id
and z.forid = n.id
and k.forid = z.id
and k.datum = (select max(k.datum) from Tabelle4 k)

Damit wird aber nur 1 Datensatz angezeigt, nàmlich der, der bis zur 4.
Tabelle mit einem Wert gefüllt ist.
Der andere, der nur bis zur 2. Tabelle Werte hat, ist nicht mehr mit drin.

Kann man sowas überhaupt in einer SQL-Abfrage lösen?

Besten Dank.

Josef

P.S.
Ist ziemlich lang geworden. Hoffentlich blickt da noch jemand durch.
 

Lesen sie die antworten

#1 Ralf Mimoun
19/02/2008 - 07:32 | Warnen spam
Moin!

Josef Koller wrote:
...
Als Ergebnis sollten 2 Datensàtze rauskommen:
Die zwei Datensàtze aus Tabelle 1 und Tabelle 2.

Bei der Tabelle 3 sollten die Werte aus der höchsten(neuesten) ID
dazukommen, also der Satz mit der ID = 2 und dann aus der Tabelle 4
der Satz mit dem neuesten Datum,also ID =2 (24.12.1212).



Schau Dir mal JOIN, MAX und GROUP BY an. Damit sollte das erschlagbar sein.

Bye, Ralf

Ähnliche fragen