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

Ранее я просил удалить текст из поля и преобразовать его в 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

И затем я получаю ошибку Invalid Column Name memID.

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
4
0
13 934
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Ответ принят как подходящий

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

Исходная связь - с полностью отдельной таблицей, и эта таблица во времени потеряла информацию, поэтому следующая лучшая таблица - это таблица учета :(

Symbioxys 22.09.2008 15:11

Возможно, вы можете восстановить ключевое поле из поля id и / или разделить поле accountTab.id на компоненты, которые можно собрать в исходное поле id?

Remi Despres-Smyth 22.09.2008 15:31

Спасибо, я попробую, я лучше сделаю это, чем возьмусь с этим.

Symbioxys 22.09.2008 15:40

Для тех, кто проголосовал против этого ответа: иногда ответ, который нужен или хочет услышать человек, звучит так: «Вам не следует делать это, попробуйте вместо этого что-нибудь другое».

Remi Despres-Smyth 25.08.2009 22:24

Я не голосовал против, но имейте в виду, что иногда человек работает с базой данных в ситуации, когда рефакторинг модели данных невозможен. Для этого есть масса «веских», но «оскорбительных» причин. Расписания, внутренняя политика, абсолютный вес кода. Ваша точка зрения, конечно, верна, но вы можете подумать об ответе на конкретный вопрос в дополнение к тому, чтобы изложить свою точку зрения.

jaydel 30.01.2012 19:12

@jaydel Да, я согласен, но тот факт, что ситуация может или не может разрешить рефакторинг базы данных, не означает, что это неверный ответ, если только вопрос не предоставил контекст, чтобы указать это. Я не делал никаких особых указаний - это, собственно, то, что я сделал бы в его ситуации, если бы была возможность.

Remi Despres-Smyth 30.01.2012 19:36

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

Remi Despres-Smyth 30.01.2012 19:59

Да, когда этот вопрос стал первым хитом в Google, я был ТАК рад увидеть ответ, что у меня проблемы с дизайном, и мне нужно реорганизовать свою таблицу. ДЕЙСТВИТЕЛЬНО полезный ответ. Спасибо большое.

chiliNUT 14.03.2014 20:16

@chiliNUT Мой детектор сарказма отключен.

Remi Despres-Smyth 15.04.2014 22:16

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


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

Спасибо за идею :) Мне помогло.

Sarvap Praharanayuthan 13.11.2015 19:45

Другие вопросы по теме