Sql使用join获取数据

时间:2016-08-17 13:31:56

标签: sql asp.net sql-server left-join

这里有两个表交易退款交易

我想使用连接获取数据,应该获取重复数据。

我正在使用此查询

select tr.transactionid, tr.customerid, tr.custname,
       rt.Amount, rt.Refund_Amount, rt.transactionid,   rt.referenceid
from Transaction tr 
left join RefundTransaction rt on rt.referenceid = tr.transactionid

没有提供适当的数据。它没有从退款数据中选​​择重复数据

Data and expected result

请帮忙 在这里我插入图像,你可以从中获得实际场景。

4 个答案:

答案 0 :(得分:1)

可以根据您的图像使用两者之间的内部联接简单地解决

SELECT t.transactionid, t.customerid, t.custname,
       rt.Amount, rt.Refund_Amount, rt.transactionid,   rt.referenceid
FROM TRANSACTION t
innerjoin [RefundTransaction ] rt ON rt.referenceid = t.transactionid

答案 1 :(得分:0)

根据图片,您需要将TRANSACTION表放在LEFT JOIN中。然后,只有您可以从RefundTransaction表中获取所有条目。

SELECT rt.transactionid
    ,tr.customerid
    ,tr.custname
    ,tr.Amount AS Refund_Amount
    ,rt.transactionid
    ,rt.referenceid
    ,rt.Amount 
FROM RefundTransaction rt
LEFT JOIN [TRANSACTION] tr ON rt.referenceid = tr.transactionid

答案 2 :(得分:0)

如果要选择所有数据,则必须进行完全外连接

select tr.transactionid,  tr.customerid,  tr.custname,    rt.Amount, rt.Refund_Amount,   rt.transactionid,   rt.referenceid from Transaction tr full outer join RefundTransaction rt on rt.referenceid = tr.transactionid

here您可以找到更多关于联接的信息

答案 3 :(得分:0)

对于连接,你正在做得非常反对。

这应该有用。

select tr.transactionid, tr.customerid, tr.custname,
       rt.Amount, rt.Refund_Amount, rt.transactionid,   rt.referenceid
from RefundTransaction tr left join
     Transaction rt
     on rt.referenceid = tr.transactionid