使用LEFT JOIN將兩個MSSQL數據庫連接在一起(在同一臺服務器上)時遇到了很大問題。我跑從數據庫OLAB_DB這個SQL並且得到錯誤:加入兩個數據庫時出錯(SQL Server)
The multi-part identifier "OLAP_DB.dbo.OLAP_invoice.UserID" could not be bound.
似乎有與數據庫不能夠發現自己的問題,我不知道該怎樣來解決這個想法。我有雙重和三重檢查拼寫和改寫了SQL幾次,但現在我只是不得不放棄尋求幫助:(
這不起作用:
SELECT TOP 200
COALESCE(LTRIM(RTRIM(contact_db.dbo.ContactTable.EmailAdr)),LTRIM(RTRIM(contact_db.dbo.CustomerTable.EmailAdr))) AS EMAIL,
OLAP_invoice.OrdreLinjeID AS ORDERNO
OLAP_invoice.SalgsPris AS PRICE,
OLAP_invoice.UserID AS CONTACTID
FROM OLAP_invoice,contact_db.dbo.CustomerTable
LEFT JOIN contact_db.dbo.ContactTable
ON OLAP_DB.dbo.OLAP_invoice.UserID = contact_db.dbo.ContactTable.UserID
WHERE contact_db.dbo.CustomerTable.ClientID = OLAP_invoice.ClientID
但跳過左連接和剛剛從兩個不同的數據庫中獲取數據只是罰款
這只是正常:
SELECT TOP 200
LTRIM(RTRIM(contact_db.dbo.CustomerTable.EmailAdr)) AS EMAIL,
LTRIM(RTRIM(contact_db.dbo.ContactTable.UserID)) AS EMAIL2,
OLAP_invoice.OrdreLinjeID AS ORDERNO
OLAP_invoice.SalgsPris AS PRICE,
OLAP_invoice.UserID AS CONTACTID
FROM OLAP_invoice,contact_db.dbo.CustomerTable
WHERE contact_db.dbo.CustomerTable.ClientID = OLAP_invoice.ClientID
AND contact_db.dbo.ContactTable.UserID = OLAP_invoice.UserID
我需要LEFT JOIN的原因是,有些訂單沒有使用UserID(僅限ClientID)進行註冊。 我已經檢查了訪問權限,並且單獨訪問這些字段沒有問題,當我必須比較LEFT JOIN中的值並指定絕對路徑時,會出現問題。
你有什麼想法可能是錯的?
你混合明確連接(使用'JOIN'關鍵字)和隱式連接(在'WHERE'條款)在你第一次聲明:'FROM OLAP_invoice,contact_db.dbo.CustomerTable'你不應該那樣做。 –
您不僅應該永不混合使用顯式和隱式連接(通常可能會得到不正確的重試或錯誤),但您絕對不應該使用隱式連接,它們是SQL反模式。 – HLGEM