首先我會解釋我的情況。下面是使用2個總表:SQL讓我頭痛 - 多個連接
帳戶:
LegacyID =的 帳戶
InvoiceAccount的IDENTIFER =一個帳戶可以在同一 表 多個子賬戶。此字段是其父賬戶
客戶的LegacyID =可以有兩種不同的 類型的賬戶,他們可以共享 ID的 - 所以此列的2區分 對於我 SQL我的目的總是希望它是真實的而不是假的
AllocatedUser = 需要看到這個 交付的人的用戶名。這只是填充在 父帳戶,所以我需要鏈接 回去拿本作的子賬戶
交付:
LegacyID =的交付標識符
客戶=的LegacyID的賬戶 (可以是 子賬戶)
OnHold =一個標誌爲pu rposes我查詢的 必須
現在,這解釋,基本上我需要它返回的「ONHOLD」任何交付的SQL,但只適用於運送該分配登錄的用戶帳戶「真」。如果交付鏈接到父帳戶,則選擇AllocatedUser的查詢很簡單,但如果交付鏈接到子帳戶,則返回行時出現問題 - 它根本不會返回任何內容。這裏是下面的SQL:
SELECT Deliveries_1.LegacyID, Deliveries_1.TripDate, Deliveries_1.OnHoldReason, Account_2.AllocatedUser
FROM Deliveries AS Deliveries_1 INNER JOIN
Account AS Account_1 ON Deliveries_1.Customer = Account_1.InvoiceAccount INNER JOIN
Account AS Account_2 ON Account_1.InvoiceAccount = Account_2.LegacyID
WHERE (Deliveries_1.OnHold = @OnHold) AND (Account_2.Customer = 'True') AND (Account_2.AllocatedUser = @AllocatedUser)
我的心從試圖找出爲什麼它不會在此刻疲憊不堪的工作 - 我真的很感激任何意見。
謝謝!
你可以提供一些數據,例如,與預期的結果? – Fede 2010-11-30 17:15:38
我們還需要類型,特別是Deliveries.Customer,Account.InvoiceAccount,Account.LegacyID,Account.Customer,Deliveries.OnHold,Account.AllocatedUser,@OnHold和@AllocatedUser – 2010-11-30 17:19:51