SQL: внутреннее соединение по столбцу псевдонимов - PullRequest
3 голосов
/ 22 сентября 2008

Ранее я просил убрать текст из поля и преобразовать его в int, это работает успешно. Но теперь я хотел бы сделать ВНУТРЕННЕЕ СОЕДИНЕНИЕ по этому новому значению.

Итак, у меня есть это:

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 ошибка.

Как я могу это исправить?

Ответы [ 3 ]

6 голосов
/ 22 сентября 2008

Вы можете повторить все выражение или отменить соединение:


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
1 голос
/ 22 сентября 2008

Вместо memId повторите все выражение целиком.

0 голосов
/ 22 сентября 2008

Если вам нужно это сделать, у вас проблемы с дизайном. Если вы можете, я бы посоветовал вам провести рефакторинг вашей таблицы или отношений.

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