Как SQLLite объединить несколько таблиц без неоднозначности столбцов - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующий упрощенный запрос SQLLite:

SELECT SPECIALTABLE.DETAILS AS Details 
FROM SPECIALTABLE 
INNER JOIN CUSTOMERTABLE 
ON CUSTOMERTABLE.CUSCODE = SPECIALTABLE.CUSCODE 
INNER JOIN CUSTOMERNAMETABLE 
ON CUSTOMERNAMETABLE.NAMECODE = CUSTOMERTABLE.NAMECODE 
WHERE NAMECODE LIKE '%' LIMIT 10

SPECIALTABLE не содержит столбец NAMECODE.

Но когда я запускаю запрос, он выдает «неоднозначное имя столбца»ошибка по NAMECODE.Однако я не хочу указывать таблицу по коду имени (например, WHERE CUSTOMERTABLE.NAMECODE LIKE ...).

Насколько я понимаю, SQLLite должен обрабатывать результат этих объединений как одну большую таблицу, содержащую все столбцы, которыесодержится в каждой из таблиц, так почему же существует двусмысленность?

Проблема в том, что нет столбца, напрямую связывающего SPECIALTABLE и CUSTOMERNAMETABLE.

1 Ответ

0 голосов
/ 02 октября 2018

Когда вы пишете свою последнюю строку, вы не указываете, в каком состоянии находится NAMECODE.Таким образом, SQL не может правильно перехватить NAMECODE, потому что для них есть два определения (CUSTOMERNAMETABLE.NAMECODE и CUSTOMERTABLE.NAMECODE)

WHERE NAMECODE LIKE '%' LIMIT 10

Попробуйте указать в таблице, что вы хотите условие NAMECODE, напримерэто:

WHERE CUSTOMERNAMETABLE.NAMECODE LIKE '%' LIMIT 10

или это:

WHERE CUSTOMERTABLE.NAMECODE LIKE '%' LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...