使用内部联接来连接3个表?

时间:2013-05-23 07:07:13

标签: sql ms-access

如何加入3个表?

select * 
from tblcustomer as cust 
    inner join (tblamountdetails as det on det.[CustomerID]=cust.[CustomerID]) 
    inner join (select cash.AccountID, sum(Amount) as [Paid Amount] 
                from tblcashdetails as cash 
                group by cash.AccountID) as cash2 
        on cash2.AccountID=det.AccountID

表格格式:

1) cutomertable:
    customerid | customername | Address | phone
        1            arun       palani    1212112221
        2            aaa        sssss    123123123

2)Amountdetailtable:
    AccountID | customerid | Total amount | Daily Amount
        1            1            12000        120

3)cashtable : 
    AccountID |   customerid | amount(given day by day)
        1            1                120
        1            1                120

最后我想要这样......

    customerid | customername |AccountID| totalamount | daily amount | amount(given)
        1            arun          1        12000            120         240(this is sum of amount in table 3 where custid=1)

3 个答案:

答案 0 :(得分:2)

select 
    cust.customerid,
    cust.customername,
    amt.AccountID,
    amt.[Total amount],
    amt.[Daily Amount],
    t.amountgiven
from cutomertable cust
inner join Amountdetailtable amt on cust.customerid=amt.customerid
inner join (select SUM(amount) amountgiven,customerid from cashtable group by customerid)t 
on t.customerid=cust.customerid

<强> SQL FIDDLE

小提琴花了很多时间

答案 1 :(得分:0)

试试这个 -

SELECT *
FROM tblcustomer cust
INNER JOIN tblamountdetails det ON det.[CustomerID] = cust.[CustomerID]
INNER JOIN (
    SELECT 
          cash.AccountID
        , [Paid Amount] = SUM(Amount) 
    FROM tblcashdetails cash
    GROUP BY cash.AccountID
) cash2 ON cash2.AccountID = det.AccountID

答案 2 :(得分:0)

答案: SELECT DISTINCTROW tblamountdetails.CustomerID,tblcustomer。[Customer Name],tblamountdetails.AccountID,tblamountdetails。[Total Amount],tblamountdetails。[Daily Amount],Sum(tblcashdetails.Amount)AS [Amount Given],(tblamountdetails。[Total Amount] - [Amount Given])AS [Balance] FROM(tblcustomer RIGHT JOIN tblamountdetails ON tblcustomer。[CustomerID] = tblamountdetails。[CustomerID])LEFT JOIN tblcashdetails ON tblamountdetails。[AccountID] = tblcashdetails。[AccountID] GROUP BY tblamountdetails.AccountID, tblamountdetails.CustomerID,tblamountdetails。[总金额],tblamountdetails。[每日金额],tblcustomer。[客户名称]“