Почему запрос имеет неоднозначные символы? - PullRequest
0 голосов
/ 02 декабря 2018

Я использую sqlite3 в своем приложении c ++, а также использую SQLiteStudio для отладки своих запросов.

У меня есть две почти эквивалентные базы данных DB и DB1.Оба имеют одинаковую таблицу Tab1 с (почти) одинаковыми полями: столбцы DB.Tab1 = [a, b, c, d] и столбцы DB1.Tab1 = [a, b, c, d, e].

Когда я пытаюсь выполнить этот запрос:

SELECT DB1.Tab1.a, DB1.Tab1.b, DB1.Tab1.c FROM DB1.Tab1 LEFT JOIN Tab1 ON (DB1.Tab1.a = Tab1.a); У меня странная ошибка: ambiguous name: Tab1.a.

Перед этим запросом я открыл DB, а затем прикрепил DB1 к моему текущему соединению.

Я пытался соединить две таблицы в другом поле d, пытался выбрать больше или меньше полей, пытался указать полное или короткое имя - это всегда одна и та же ошибка ambiguous name, даже если она только однаместо, где я использую этот столбец.

Что я сделал не так?

1 Ответ

0 голосов
/ 02 декабря 2018

Таблицы имеют одинаковое имя, но в разных базах данных.Это меня смущает, а тем более SQL-компилятор.

Просто присвойте свои псевдонимы:

SELECT dt1.a, dt1.b, dt1.c
FROM DB1.Tab1 dt1 LEFT JOIN
     Tab1 t1
     ON dt1.a = t1.a;

Проблема в том, что tab1.a может относиться либо к tab1.a, либо к db1.tab1.a,основанный на правилах, которые SQL использует для псевдонимов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...