SQL:внутреннее соединение столбца псевдонимов

StackOverflow https://stackoverflow.com/questions/114242

  •  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 повторите все выражение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top