SQL JOIN, чтобы получить сравнение двух значений в строке из таблицы «A» и той же строки из таблицы «B» - PullRequest
0 голосов
/ 06 августа 2020

У меня есть две таблицы со следующими строками

Таблица A (транзакция)

 Order       Seller      Customer    
 1           300         500

Таблица B (люди)

PersonID          FullName        
300               Peter White
500               Scott Bold

Мне нужен результат вроде this

Order      Seller        Customer     FullName (Seller)      FullName  (customer)     
1          300           500          Peter White            Scott Bold

Я пробовал несколько вещей, но, что имеет больше смысла, это дважды присоединиться к таблице, однако я получаю:

Неопределенное имя столбца

Это SQL Сервер 2019.

В основном я ищу информацию из той же таблицы вместо создания дополнительных таблиц. Это возможно? Если да, то как дела? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Как написал @jarlh в комментарии:

select t.order, t.seller, t.customer, sel.fullname, cust.fullname
from transaction t
join persons sel -- sel is an alias to persons table
  on sel.personid = t.seller
join persons cust
  on cust.personid = t.customer;

Запрос с join вернет результат, пока и продавец, и покупатель существуют в таблице persons - здесь это должно быть как имена исходной таблицы transactions:).

0 голосов
/ 06 августа 2020

У меня есть другая форма запроса, он все еще дважды присоединяется к таблице B.

Это синтаксис archai c, который я не рекомендую, но для начинающих знакома концепция JOIN:

select t.*,B.FullName as FullName  (customer)  from
(

select A.Order,A.Seller,A.Customer,B.FullName as FullName(Seller) 
    from A,B where A.Seller=B.PersionID
) t, B where t.Customer=B.PersionID

Правильный способ JOIN:

select t.*,B.FullName as FullName  (customer)  from
(
select A.Order,A.Seller,A.Customer,B.FullName as FullName(Seller) 
        from A JOIN B ON A.Seller=B.PersionID
) t JOIN B ON t.Customer=B.PersionID

Надеюсь, это вам поможет.

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