ПРИСОЕДИНЯЙТЕСЬ к нескольким таблицам, использующим один и тот же первичный ключ - PullRequest
0 голосов
/ 04 марта 2020

У меня есть 4 таблицы, которые используют один и тот же PK usercode. Мне нужно извлечь различные столбцы из каждой таблицы на основе кода пользователя. Например:

  • T1 ( код пользователя , A1, A2, A3, ...)
  • T2 ( код пользователя , B1, B2 , B3, ...)
  • T3 ( код пользователя , C1, C2, C3, ...)
  • T4 ( код пользователя , D1 , D2, D3, ...)

Я пробовал следующее:

SELECT A1, A2, B3, B4, C2, D1, D4 
FROM T1 A 
JOIN T2 B ON a.usercode = b.usercode
JOIN T3 C ON b.usercode = c.usercode 
JOIN T4 D ON c.usercode = d.usercode

Когда я это делаю, я получаю дублирующиеся результаты. Какой лучший способ сделать это?

Кроме того, всякий раз, когда я использую UNION, я получаю сообщение об ошибке

Ошибка преобразования типа данных varchar в число c

Я собираюсь без ума от этого, любое руководство поможет! Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете сделать это следующим образом: я надеюсь, что ваши suercodes имеют тот же тип

SELECT A1,A2,B3,B4,C2,D1,D4 
FROM 
(select usercode from T1 union select usercode from T2 
union select usercode from T3 union select usercode from T4)u
JOIN T1 A ON u.usercode = a.usercode
JOIN T2 B ON u.usercode = b.usercode
JOIN T3 C ON u.usercode = c.usercode 
JOIN T4 D ON u.usercode = d.usercode
...