Schema:Identyfikator wieloczęściowy nie mógł być związany - podzapytanie
create table TableA (A1 int)
create table TableB (B1 int, B2 int)
create table TableC (C1 int)
zapytania Problematyczne:
SELECT *
FROM TableA a
INNER JOIN TableB b ON b.B1=a.A1
INNER JOIN (SELECT TOP 1 *
FROM TableC c
WHERE c.C1=b.B1 ORDER BY c.C1) d ON d.C2=b.B2
INNER JOIN OtherTable ON OtherTable.Foo=d.C1
Budowanie tego schematu i uruchomienie kwerendy w SQLFiddle pod SQL Server 2008 wyniki w:
The multi-part identifier "b.B1" could not be bound.: SELECT * FROM TableA a INNER JOIN TableB b ON b.B1=a.A1 INNER JOIN (SELECT TOP 1 * FROM TableC c WHERE c.C1=b.B1 ORDER BY c.C1) d ON d.C2=b.B2
Korzystanie CROSS APPLY zamiast INNER JOIN do poprawek podzapytaniu problem
Na czym polega problem?
Edytuj: Dodałem "TOP 1", który był częścią prawdziwego zapytania i jest istotną częścią problemu.
Edycja2: Więcej informacji na temat problemu.
OK. Spójrz na swoje podkwerendy. Filtrujesz według C1, a następnie ORDER BY C1. Co to znaczy? Myślę, że musisz "ZAMAWIĆ PRZEZ" C2. –
To jest abstrakcja prawdziwego zapytania –
Ale zakłócasz logikę. Zobacz moją zaktualizowaną odpowiedź. –