sql 空白处的内部联接 table

sql inner join on blank table

我对简单的事情有一个复杂的查询,但我已经设法让它工作了。当 idclient 为 1 时查询有效,但是当 idclient 为 5 时出现问题。

问题是那个客户没有订购任何东西,他只是付了一些钱。所以没有 a.price,几乎整个 table 都是空白的,我想要像 -1200,00 这样的结果或负数的支付金额。我的问题是 table 的第一部分不存在,所以内部连接是不可能的,第二部分也不存在。对 "quick fix" 有什么建议吗? :)

SELECT SUM(a.price) - s.pay AS Remain 
FROM   (SELECT name, 
               ( quantity * itprice ) * ( 100 - percent ) / 100 AS price, 
               idclient 
        FROM   (SELECT order.iditem     AS ID, 
                       item.name, 
                       SUM(order.quant) AS quantity, 
                       order.percent, 
                       item.itprice, 
                       order.idclient 
                FROM   item 
                       inner join order 
                               ON order.iditem = item.id 
                WHERE  ( order.idclient = 1 ) 
                GROUP  BY order.iditem, 
                          order.percent, 
                          item.name, 
                          item.itprice, 
                          order.idclient) AS X) AS a 
       inner join (SELECT SUM(amount) AS Pay, 
                          idcom 
                   FROM   payed 
                   WHERE  ( idcom = 1 ) 
                   GROUP  BY idcom) AS s 
               ON a.idclient = s.idcom 
GROUP  BY s.idcom, 
          a.idclient, 
          s.pay 

(代码中可能有一些打字错误,但请不要打扰,因为我已经翻译了我的原始代码,所以可能在翻译过程中丢失了一些字母。代码是正确的)

这总是只获取一行吗?至少它看起来像,如果是这样的话,你可以像这样使用变量:

declare @price decimal(10,2) = 0, @payment decimal(10,2) = 0

SELECT 
    @price = SUM(order.quant * item.itprice ) * ( 100 - order.percent ) / 100)
FROM
    item 
    inner join order 
        ON order.iditem = item.id 
WHERE
    order.idclient = 1 

SELECT 
    @payment = SUM(amount)
FROM   
    payed 
WHERE
    idcom = 1

select @price - @payment