Объединение трех таблиц SQL без связей внешних ключей - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу объединить 3 таблицы SQL в одну. 2 из них связаны внешним ключом, а третий нет.

Схемы 3 таблиц:

PaysSociete

PaysSociete

* 1015 служащий *

Employe

Ligne

Ligne

Я хочу объединить три из них в уникальную таблицу с именем Пользователь со следующими столбцами:

  • 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.

Как это исправить?

Пожалуйста, помогите !!!

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Вы можете объединять таблицы в любом столбце, который соответствует другому столбцу. Для соединения не требуется внешний ключ.

SELECT * 
  FROM Ligne
  JOIN PaysSociete ON Ligne.CodeSociete = CONVERT(varchar(10), PaysSociete.id)
  JOIN Employe ON Employe.Societe = PaysSociete.CodePaysSociete 
0 голосов
/ 05 апреля 2019

Проблема решена!

Столбец ReferentielId из Ligne обработанных данных из столбца EmployeId из Employe.

Простое соединение работает.

Извините за беспокойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...