SQL:الانضمام الداخلي على عمود الاسم المستعار

StackOverflow https://stackoverflow.com/questions/114242

  •  02-07-2019
  •  | 
  •  

سؤال

لقد طلبت سابقًا تجريد النص من حقل وتحويله إلى 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 خطأ.

كيف يمكنني اصلاح هذا؟

هل كانت مفيدة؟

المحلول

إذا كان عليك القيام بذلك، فلديك مشاكل في التصميم.إذا كنت قادرًا، أقترح عليك إعادة هيكلة جدولك أو علاقاتك.

نصائح أخرى

يمكنك إما تكرار التعبير بالكامل أو عكس الانضمام:


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