2016-05-31 3 views
0

Ich habe die folgende Abfrage und ich bekomme eine mehrteilige Kennung konnte nicht gebunden Ausnahme werden. Mir ist klar, warum und mein nächster Gedanke war, ein CROSS APPLY zu verwenden, was nicht funktionierte. Was ich wirklich tun muss, ist dieser Unterabfrage beizutreten, um sicherzustellen, dass ich den neuesten Eintrag für eine bestimmte Spalte erhalte.Unterabfrage in Inner Join - Multi-Teil Identifier konnte nicht gebunden werden

Leider habe ich keine Ideen mehr ... Wie beende ich diese Abfrage?

SELECT t1.* 
FROM dbo.Table1 t1 (nolock) 
INNER JOIN 
(
    SELECT TOP 1 t2_s.c1, t2_s.c2, t2_s.c4 
    FROM dbo.Table2 t2_s 
    WHERE t2_s.c1 = t1.c1 
    ORDER BY t2_s.dateStamped DESC 
) t2 
    on t2.c1 = t1.c1 
INNER JOIN dbo.Table3 t3 
    on t3.c1 = t2.c2 and t3.c2 = 1 
WHERE t1.c2 = 'xxx' 
+1

Welche Datenbank verwenden Sie? –

+0

SQL Server - Sorry, habe vergessen, das zzz zu setzen – user2124871

Antwort

1

Vorausgesetzt, dass Sie SQL Server verwenden, dann CROSS APPLY sollte das tun, was Sie wollen:

SELECT t1.* 
FROM dbo.Table1 t1 (nolock) CROSS APPLY 
    (SELECT TOP 1 t2_s.c1, t2_s.c2, t2_s.c4 
     FROM dbo.Table2 t2_s 
     WHERE t2_s.c1 = t1.c1 
     ORDER BY t2_s.dateStamped DESC 
    ) t2 INNER JOIN 
    dbo.Table3 t3 
    on t3.c1 = t2.c2 and t3.c2 = 1 
WHERE t1.c2 = 'xxx';