Sql 使用连接获取数据

Sql fetch data with join

这里有两个tableTransactionRefundtransaction

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

我正在使用这个查询

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

它没有提供正确的数据。它不是从退款数据中选​​择重复数据

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

根据图像,您需要将 TRANSACTION table 放在 LEFT JOIN 中。然后只有你可以从 RefundTransaction table.

中获取所有条目
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

如果您想 select 所有数据,您必须进行完整的外部连接

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 您可以找到有关联接的更多信息

你对连接做的恰恰相反。

这应该有效。

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

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

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