我想将3个SQL表合并为一个。其中有2个是通过外键链接的,但第3个不是。
3种表方案是:
PaysSociete
雇员
木质
我想将其中的3个加入到名为 User 的唯一表中,该表具有以下列:
Pays
:PaysSociete.LibellePaysSociete Societe
:Employe.SOCIETE Utilisateur
:Ligne.UtilisateurLigne Matricule
:Employe.Matricule NumLigne
:Ligne.Numero EmpMetier
:Employe.SectionIris 在表Ligne
中,列CodeSociete
对应于表id
中的PaysSociete
列(作为外键)
表Societe
的列Employe
对应于CodePaysSociete
中的PaysSociete
列(但它不是外键,因为它不是唯一的)
这是我的要求:
select
case
when p.PaysSocieteId=1 then 'CountryCode1'
when p.PaysSocieteId=2 then 'CountryCode2'
when p.PaysSocieteId=3 then 'CountryCode3'
end Pays,
p.CodePaysSociete Societe,
l.UtilisateurLigne Utilisateur,
e.Matricule Matricule,
l.Numero NumLigne,
e.SectionIris EmpMetier
from Ligne as l
join PaysSociete as p on l.CodeSociete=CONVERT(varchar(10), p.PaysSocieteId)
join Employe as e on e.Societe = p.CodePaysSociete
但是重复的User.Matricule
和User.EmpMetier
列给我带来了不好的结果。
我该如何解决?
请帮助!!!
答案 0 :(得分:1)
您可以在与另一列对应的任何列上联接表。加入不需要外键。
SELECT *
FROM Ligne
JOIN PaysSociete ON Ligne.CodeSociete = CONVERT(varchar(10), PaysSociete.id)
JOIN Employe ON Employe.Societe = PaysSociete.CodePaysSociete
答案 1 :(得分:0)
问题解决了!
ReferentielId
的Ligne
列处理了 EmployeId
的Employe
列中的数据。
一个简单的结点起作用。
很抱歉造成麻烦。