2009-05-15 5 views
2

Ich versuche, eine Subselect und Inner Join in der gleichen Abfrage mit wenig Erfolg zu tun.Unterstützung für eine SQL-Abfrage - Die mehrteilige ID konnte nicht gebunden werden

Die Abfrage, wie es steht unter und

Der mehrteilige Bezeichner „Company.LocalityId“ den Fehler der Rückkehr nicht gebunden sein könnte.

UPDATE Company 
SET 
    Company.BusinessRegionId = b.Id 
FROM 
(
    SELECT 
     Id 
     FROM 
     BusinessRegion 
     WHERE 
     tag = 'Australia/New South Wales' 
) b 
INNER JOIN Locality l ON 
    Company.LocalityId = l.Id 
where 
    l.StateOrProvinceAbbreviation = 'NSW' 

Jede Hilfe dankbar empfangen würde.

Antwort

4

Ihre BusinessRegion und Locality-Tabellen sind in dieser Abfrage überhaupt nicht verknüpft, oder? Kannst du stattdessen so etwas tun?

UPDATE Company 
SET BusinessRegionId = (
    SELECT TOP 1 Id 
    FROM BusinessRegion 
    WHERE Tag = 'Australia/New South Wales') 
FROM Locality l 
WHERE l.Id = LocalityId AND l.StateOrProvinceAbbreviation = 'NSW' 
+0

Danke, macht Sinn, ich war zu ausführlich ein wenig bekommen :) – johnc

3

Hier ist eine Variation der Abfrage:

UPDATE 
    c 
SET 
    c.BusinessRegionId = 
    (
     SELECT TOP 1 
     Id 
     FROM 
     BusinessRegion 
     WHERE 
     tag = 'Australia/New South Wales' 
    ) 
FROM 
    Company c 
    INNER JOIN Locality l ON c.LocalityId = l.Id 
WHERE 
    l.StateOrProvinceAbbreviation = 'NSW' 
+0

Ich ging eigentlich für diesen einen selbst (leichter zu sehen, was los war, in der Join), aber es war Matts Vorschlag, der mich über die Linie gebracht hat – johnc

Verwandte Themen