2017-08-03 4 views
0

non valide je l'exemple suivantSQL JOIN - Impossible d'utiliser Alias, impossible d'accéder à la colonne. N'a pas pu être lié/colonne

SELECT  
     a.PATIENT_ACCOUNT_NUMBER AS Account, 
     a.Payment AS Collection, 
     CONCAT(c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER) AS Client_Account, 

FROM TEMP_TABLE_2 a 
LEFT JOIN denial_table d ON a.PATIENT_ACCOUNT_NUMBER= d.account_number 

--Issue here 
INNER JOIN events_table e ON Client_Account = e.fk_Account 
-- 

INNER JOIN flist_table b ON a.FACILITY_CODE = b.client_facility 
INNER JOIN ref_f_table c ON c.ID = b.fk_facility_id 

La question est dans le 2ème Rejoignez

  • Je ne peux pas utiliser Alias ​​du Client_Account '

    • non valide nom de la colonne
  • Je ne peux pas utiliser CONCAT (c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER)

    • identifiant plusieurs parties ne pouvait être liée

Comment puis-je accéder à CONCAT (c.FacilityCode , a.PATIENT_ACCOUNT_NUMBER) dans la 2ème inscription?

En utilisant T-SQL

+1

Je suggère d'utiliser de meilleurs alias que a, b, c. C'est juste un cauchemar avec lequel travailler. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-table-aliases-like-abc-or-t1-t2-t3.aspx –

+0

vous avez besoin connaître l'ordre d'exécution réel de TSQL au lieu de l'ordre logique – LONG

+0

@SeanLange ouais ce ne sont pas les alias réels. Ou noms de tables. Je suppose que pour la question, j'aurais pu en utiliser de meilleurs. – user8162361

Répondre

2

Vous devez utiliser l'expression complète (pas le pseudonyme) et mis les tables dans l'ordre correct:

SELECT a.PATIENT_ACCOUNT_NUMBER AS Account, a.Payment AS Collection, 
     CONCAT(c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER) AS Client_Account, 
     . . . 
FROM TEMP_TABLE_2 a INNER JOIN 
    flist_table b 
    ON a.FACILITY_CODE = b.client_facility INNER JOIN 
    ref_f_table c 
    ON c.ID = b.fk_facility_id INNER JOIN 
    events_table e 
    ON CONCAT(c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER) = e.fk_Account LEFT JOIN 
    denial_table d 
    ON a.PATIENT_ACCOUNT_NUMBER= d.account_number 

Comme un avantage, je pense qu'il est mieux de mettre le INNER JOIN s avant le LEFT JOIN s. Cela permet de s'assurer qu'une clé NULL (à partir d'une ligne non correspondante) n'est pas utilisée par inadvertance dans une clause ON.

+0

Aha, donc l'ordre des tables a de l'importance. Je vais vous laisser savoir ce qui se passe. – user8162361

+0

Je voudrais savoir comment la réponse était simple. Merci pour votre aide Gordon! – user8162361