Ich bin auf ein Problem, weil ich versuche, eine explizite Join in einem inneren Join, wo ich versuche, bestimmte Werte zu wählen von einem anderen Tisch.TSQL mehrteilige Bezeichner konnte nicht gebunden werden (explizite Join für SELECT x Tabelle in inneren Join)
My SQL:
SELECT A.OrderID
, A.ItemID
, A.Line
, B.LID
, B.Quantity
FROM Sales A
INNER JOIN (SELECT X.OrderID
, X.Line
, SUM(X.Quantity) AS Quantity
, X.DestinationID
, X.SerialNum
FROM SalesDetail X
WHERE X.OrderID = A.OrderID
GROUP BY X.OrderID, X.Line, X.DestinationID, X.SerialNum
) AS C
ON A.Line = C.Line
AND B.Quantity = C.Quantity
AND B.SerialNum = C.SerialNum
INNER JOIN SalesContents B
ON A.OrderID = B.OrderID
AND A.ItemID = B.ItemID
WHERE A.OrderID = '12345'
AND A.ItemID = 'ABC123';
Jetzt kann ich die WHERE-Klausel in der X-Tabelle entfernen und filtere es innerhalb der inneren beitreten, aber ich mag es richtig filtern, wenn ich die Werte am abfragt. Gibt es eine Möglichkeit, diese Anweisung neu zu schreiben, so dass der ungebundene Bezeichner bearbeitet werden kann?
bewegen nur die Bedingungen 'UND B.Quantity = C.Quantity UND B.SerialNum = C.SerialNum' nach' join' SalesContents B (alias). –
Ihre Anfrage ergibt keinen Sinn. Die Join-Bedingungen beziehen sich auf Tabellenaliasnamen, bevor sie definiert werden. Ich finde es hilfreich, Tabellenabkürzungen für die Tabellenaliasnamen zu verwenden (z. B. "s" für "sales" anstatt "a"). Wenn Sie die Abfrage korrigieren, um die Bedingungen korrekt zu ordnen, und die 'where'-Klausel in der Unterabfrage entfernen, können Sie die Abfrage möglicherweise selbst beheben. –