Как определить LEFT JOIN переменные с тем же именем - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь получить результат из левого соединения, где у меня такое же имя столбца что я всегда пытаюсь сделать всегда я получаю неизвестные столбец или поле или что-то еще .. где моя ошибка?

База данных

столбцы oc_damask_name

id,name,filter_id

столбцы oc_damask_description

id,name,filter_id,filter_group_id

Запрос

SELECT oc_damask_description.name as ddname, oc_damask_name.* 
FROM  oc_damask_description dd 
    LEFT JOIN oc_damask_name dn ON (dd.filter_id =  dn.filter_id)

Error

#1051 - Unknown table 'test.oc_damask_name'

1 Ответ

0 голосов
/ 15 января 2019

Если вы используете псевдоним в предложении from, эта ссылка на таблицу больше не будет доступна под исходным именем таблицы в любом предложении, которое логически оценивается впоследствии 1 . Это включает в себя select. Вместо этого вам нужно использовать псевдоним:

SELECT dd.name as ddname, dn.* 
FROM  oc_damask_description dd #oc_damask_description no longer exists, dd does
    LEFT JOIN oc_damask_name dn #oc_damask_name no longer exists, dn does
    ON (dd.filter_id =  dn.filter_id)

Конечно, ничто не мешает вам добавить в ссылку from вторую ссылку на ту же таблицу, и если она не является псевдонимом, имя таблицы снова возвращается в область видимости, но ссылается на вторую ссылку.


1 Это отличает псевдонимы SQL от других употреблений слова «псевдоним» как в повседневной жизни, так и, возможно, в других областях технологии. В SQL псевдоним заменяет существующее имя, а не является альтернативным именем и позволяет использовать любое имя для ссылки на одну и ту же «вещь».

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