SQL: jointure interne sur colonne d'alias
-
02-07-2019 - |
Question
Auparavant, j'ai demandé à supprimer du texte d'un champ et à le convertir en int, cela fonctionne correctement. Mais maintenant, je voudrais faire un INNER JOIN sur cette nouvelle valeur.
J'ai donc ceci:
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
Ensuite, le nom de colonne invalide memID
s'affiche.
Comment puis-je résoudre ce problème?
La solution
Si vous devez le faire, vous rencontrez des problèmes de conception. Si vous le pouvez, je vous conseillerais de refactoriser votre table ou vos relations.
Autres conseils
Vous pouvez répéter l’expression entière ou inverser votre jointure:
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
Au lieu de memId, répétez l'expression entière.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow