Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access SQL查询中3个表的2个和_Sql_Ms Access - Fatal编程技术网

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

MS Access SQL查询中3个表的2个和,sql,ms-access,Sql,Ms Access,我需要帮助。我正在使用MS Access数据库 短暂性脑缺血发作 我想结合这两个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

我需要帮助。我正在使用MS Access数据库

短暂性脑缺血发作

我想结合这两个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
结果:

001 1/1/1970 arvin 109500
001 105000
问题2:

结果:

001 1/1/1970 arvin 109500
001 105000
我希望结果是这样的

001 1/1/1970 arvin 109500 105000
TIA

尝试以下解决方案:

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
如果id没有
pamount
,则在第二个子查询中使用
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

我想您只需要在table
tblpayments

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
我怀疑上面的内容不能满足您的需要,但是第二个版本可能会通过使用
子查询

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

嗨,谢谢。这就是我要找的。非常感谢。欢迎@JuanManhi,我还有一个问题,如果在付款上找不到记录怎么办,如何返回0值?您必须在付款子查询中进行更改。