質問

以前、フィールドからテキストを削除して 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