繁体   English   中英

SQL JOIN 从表“A”和表“B”中获取比较两个值/行和同一行

[英]SQL JOIN to get the compare two values/row from table “A” and the same row from table “B”

我有两个包含以下行的表

表 A(事务)

 Order       Seller      Customer    
 1           300         500

表 B(人)

PersonID          FullName        
300               Peter White
500               Scott Bold

我想要这样的结果

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

我尝试了多种方法,但是更有意义的是两次加入表,但是我得到了:

不明确的列名

这是 SQL 服务器 2019。

基本上我希望从同一个表中检索信息,而不是创建其他表。 那可能吗? 如果是,你会怎么做? 先感谢您。

正如@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;

只要卖家和客户都存在于persons表中,使用join查询就会返回结果——这里它应该作为源表名transactions :)。

我有另一种形式的查询,它仍然加入表 B 两次。

这是我不推荐的古老语法,但初学者知道 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

希望这可以帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM