4

以前、フィールドからテキストを削除して 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エラーが発生します。

どうすればこれを修正できますか?

4

3 に答える 3

6

式全体を繰り返すか、結合を逆にすることができます。


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
于 2008-09-22T11:09:47.870 に答える
2

memId の代わりに、式全体を繰り返します。

于 2008-09-22T11:02:23.550 に答える
0

これを行う必要がある場合は、設計上の問題があります。可能であれば、テーブルまたは関係をリファクタリングする必要があることをお勧めします。

于 2008-09-22T11:05:48.800 に答える