Fragensteller
Abfrage mit Join

Frage
-
Ich habe ein Abfrage mit Unterabfrage als Join eingebunden
Select ... From ...
Join (Select status,VNr,datum From TlnStat1 Join Tln_Status On Status=id_tstat1) t2 On t2.VNr=id_tlnmzDas funktioniert. Nun möchte ich aber in der Unterabfrage jeweils nur den aktuellsten Datensatz ermitteln:
Select ... From ...
Join (Select Top 1 status,VNr,datum From TlnStat1 Join Tln_Status On Status=id_tstat1 Order By datum DESC) t2 On t2.VNr=id_tlnmzDas funktioniert auch aber nur wenn die Unterabfrage (ohne Top 1) mehr als 1 Datensatz ergibt. Oftmals ergibt diese aber nur 1 Datensatz und dann kommt NULL zurück.
Was ist da falsch?
Mittelung vom Forum
Alle Antworten
-
Hallo Alexander,
genau so hätte ich es erwartet. Aber in Realität ist es so wie beschrieben: Bei nur einem Datensatz als Resultat gibt die Unterabfrage keinen Wert zurück. Das Left Join würde nur verhindern, dass damit die Gesamtausgabe NULL bringt.
Uwe
Mittelung vom Forum
-
Uwe, es ist zu spät, sorry ja klar. Dann würde ich meinen da ist nichts. Prüfe den Eintrag der 1. Tabelle und suche den Wert
id_tlnmz zunächst in der Tabelle TlnStat1. Den soll es nicht geben.
Aber: auf welcher Spalte/Tabelle kommt denn überhaupt die NULL? von der Tabelle TlnStat1?
der sollte das zeigen: select t0.* from deinerTabelleohneName t0 left join TlnStat1 t1 on t0.id_tlnmz = t1.VNr where t1.vnr is null.
Wobei: ein paar Aliase würden dem lesenden trotzdem helfen. Hat den Vorteil das Du beim erweitern selten die Meldung erhältst das die Spalte unklar ist die gemeint ist wenn sich die Definition mal ändert, was in der Realität durchaus passieren kann.Grüße Alexander
-
Hallo Uwe,
bitte poste doch mal die Struktur der verwendeten Tabellen sowie ein paar Beispieldaten.
Ich verstehe noch nicht so ganz, warum Du ein SubSelect als JOIN verwendest.Uwe Ricken
MCITP Database Administrator 2005
MCITP Database Administrator 2008
MCITP Microsoft SQL Server 2008, Database Development
db Berater GmbH
http://www-db-berater.de
SQL Server Blog (german only)