У меня есть большая проблема с объединением двух баз данных MSSQL вместе (на том же сервере) с использованием LEFT JOIN. Я запустить этот SQL из базы данных OLAB_DB и получаю ошибку:Ошибка при объединении двух баз данных (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' положение) в вашем первом statement: 'FROM OLAP_invoice, contact_db.dbo.CustomerTable', вы не должны этого делать. –
Вы не только не должны смешивать эксплицитные и имплицитные соединения (часто вы можете получить неверные результаты или ошибки). Но вы никогда не должны использовать неявные объединения вообще, они являются антипаттером SQL. – HLGEM