SQL:الانضمام الداخلي على عمود الاسم المستعار
-
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، كرر التعبير بالكامل.
لا تنتمي إلى StackOverflow