SQL:внутреннее соединение столбца псевдонимов
-
02-07-2019 - |
Вопрос
Раньше я просил удалить текст из поля и преобразовать его в int, это успешно сработало.Но теперь я хотел бы выполнить INNER JOIN для этого нового значения.
Итак, у меня есть это:
SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999))
AS 'memId', userDetails.title, userDetails.lname
FROM accountingTab INNER JOIN
(SELECT id, title, first, last FROM memDetTab) AS userDetails ON memID = userDetails.id
И тогда я получаю неверное имя столбца memID
ошибка.
Как я могу это исправить?
Решение
Если вам приходится это делать, у вас проблемы с дизайном.Если вы можете, я бы посоветовал вам провести рефакторинг таблицы или отношений.
Другие советы
Вы можете либо повторить все выражение, либо отменить соединение:
SELECT *
FROM memDetTab
JOIN (SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) AS 'memId', userDetails.title, userDetails.lname
FROM accountingTab) subquery
ON subquery.memID = memDetTab.ID
Вместо memId повторите все выражение.
Не связан с StackOverflow