2008-09-22 61 views
3

以前,我要求從一個字段中去掉文本並將其轉換爲int,這可以成功運行。但現在,我想對這個新的價值做一個INNER JOIN。SQL:在別名列上的內連接

所以我有這樣的:

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錯誤。

我該如何解決這個問題?

回答

0

如果你必須這樣做,你有設計問題。如果你能夠,我建議你需要重構你的表格或關係。

+0

原來的關係是一個完全獨立的表,並在一次表已經失去了信息,以便下一個最好的表是這個會計表:( – Symbioxys 2008-09-22 11:11:32

+0

也許你可以從ID字段重新生成一個關鍵字段,並且/或者將accountingTab.id字段拆分成可以組裝到原始ID字段的組件? – 2008-09-22 11:31:01

1

而不是memId,重複整個表達式。

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