简体   繁体   English

3个表的2个求和MS Access SQL查询

[英]2 Sums from 3 tables MS Access SQL query

I want help on this. 我需要帮助。 I'm using MS Access DB 我正在使用MS Access DB

TIA TIA

I want to combine these 2 SQL queries to get a single output. 我想结合这两个SQL查询以获取单个输出。

select a.salesid, salesdate, customername, sum(qty*price)  
from tblsales a 
inner join tblsales_details b on b.salesid = a.salesid 
where customername like '%arvin%' 
group by a.salesid, salesdate, customername

Result: 结果:

001 1/1/1970 arvin 109500

Query #2: 查询2:

select a.salesid, sum(b.pamount) as payment 
from tblsales a 
inner join tblpayments b on b.salesid = a.salesid 
where customername like '%arvin%' 
group by a.salesid

Result: 结果:

001 105000

I want the result will be like this 我希望结果会像这样

001 1/1/1970 arvin 109500 105000

TIA TIA

Try this solution: 试试这个解决方案:

SELECT x.salesid, x.salesdate, x.customername, x.amount, y.payment
FROM (
      select a.salesid, salesdate, customername, sum(qty*price) AS amount  
      from tblsales a 
      inner join tblsales_details b 
      on b.salesid = a.salesid 
      where customername like '%arvin%' 
      group by a.salesid, salesdate, customername
     ) AS x
INNER JOIN (
            select a.salesid, sum(b.pamount) as payment 
            from tblsales a 
            inner join tblpayments b 
            on b.salesid = a.salesid 
            where customername like '%arvin%' 
            group by a.salesid
           ) AS y
ON x.salesid = y.salesid

If there is no pamount for an id. 如果没有pamount一个ID。 Then use LEFT JOIN like this in Second SubQuery: 然后在Second SubQuery中像这样使用LEFT JOIN

select a.salesid, sum(IFF(b.pamount IS NULL, 0, b.pamount)) as payment 
from tblsales a 
LEFT JOIN tblpayments b 
on b.salesid = a.salesid 
where customername like '%arvin%' 
group by a.salesid

I think you would just need to add other joins with table tblpayments 我认为您只需要使用表tblpayments添加其他joins

select a.salesid, a.salesdate, a.customername, 
       sum(b.qty*b.price) as TotalPrice, sum(p.pamount) as payment 
from tblsales a 
inner join tblsales_details b on b.salesid = a.salesid 
inner join tblpayments p on p.salesid = a.salesid -- you might be need left join
where a.customername like '%arvin%' 
group by a.salesid, a.salesdate, a.customername

I suspect that the above would not give what you want, but the second version might helpful by using a subquery 我怀疑以上内容无法满足您的要求,但是第二个版本可能会通过使用subquery来提供帮助

select a.salesid, a.salesdate, a.customername, sum(b.qty*b.price) as TotalPrice, 
      (select IIF(SUM(pamount) IS NULL, 0, SUM(pamount)) from tblpayments where salesid  = a.salesid) as payment 
from tblsales a 
inner join tblsales_details b on b.salesid = a.salesid 
where a.customername like '%arvin%' 
group by a.salesid, a.salesdate, a.customername

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

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