Je suis tryng pour interroger des tables en utilisant une table de search, ceci parce que les tables ont un nom différent / code pour une même valeur.
Par exemple, les tables Employee
et Production
ont le même champ de Site
, mais elles ont un nom différent. Par conséquent, je souhaite que le champ Person
de l' Employee
et Percent
de la Production
soit joint au même Site
.
=Employee= id | Person | Site ---+----------+------ 1 | Joe | Mex 2 | Sally | MXN 3 | Eric | Mex 4 | John | USA =Production= id | % | Site ---+----------+------ 1 | 98 | Mexico 2 | 97 | USA 3 | 98 | India 4 | 96 | Thailand =SiteCode= id | Site | Sitecode ---+----------+------ 1 | Mexico | Mex 2 | Mexico | MXN 3 | USA | USA 4 | USA | Unite States of America
Sortie souhaitée:
Person | % ----------+------ Joe | 98 Sally | 98 Eric | 98 John | 97
Déjà essayé quelque chose dans le genre de:
select Employee.Person, Production.Percent from Employee INNER JOIN SiteCode on Employee.Site = SiteCode.Sitecode INNER JOIN SiteCode.Sitecode = Production.Site
Toute aide serait appréciée, juste ne peux pas envelopper mon cerveau autour d'elle ..
select Employee.Person, Production.Percent from Employee INNER JOIN SiteCode on Employee.Site = SiteCode.Sitecode INNER JOIN Production on SiteCode.Site = Production.Site
C'est difficile. Vous devriez vraiment corriger datatables. Mais, vous pouvez faire quelque chose comme ça:
with sc as ( select sc.*, (case when sitecode = 'Unite States of America' then 'USA' else sitecode end) as new_sitecode from sitecode sc ) select e.Person, p.percent from employee e join sc on e.site = sc.new_sitecode join production p on p.site = sc.site;