C# 空表上的sql内部联接

C# 空表上的sql内部联接,c#,sql,sql-server,join,inner-join,C#,Sql,Sql Server,Join,Inner Join,对于简单的事情,我有一个复杂的查询,但我已经设法让它工作了。当idclient为1时,查询工作,但当idclient为5时,存在问题 问题是那个客户并没有点任何东西,他只是付了一些钱。所以没有价格,实际上整个表都是空白的,我想要的结果是-1200,00或者支付的金额是负数。我的问题是表的第一部分不存在,所以内部连接是不可能的,而第二部分也不存在。有关于“快速修复”的建议吗?:) (代码中可能有一些键入错误,但不要麻烦,因为我已经翻译了我的原始代码,所以可能在翻译过程中丢失了一些字母。代码是正确的

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

问题是那个客户并没有点任何东西,他只是付了一些钱。所以没有价格,实际上整个表都是空白的,我想要的结果是-1200,00或者支付的金额是负数。我的问题是表的第一部分不存在,所以内部连接是不可能的,而第二部分也不存在。有关于“快速修复”的建议吗?:)


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

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

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

请使用示例数据和所需结果编辑您的问题。也许有一种更简单的方式来表达你想做什么。SQL小提琴也是一个好主意。例如:有人订购15个苹果(有价格和折扣等),A.price计算最终价格。同一个人支付100英镑,200英镑,500英镑,而s.支付所有这些。这两者之间的区别就是我想要展示的。问题是当有人不点任何东西,只是付了一些钱。那么他的桌子就不存在了。最后的结果是一张空白表格。我想要的是支付的现金金额。伙计,你真是个天才,我甚至没有尝试过变量。这要容易得多。最后仍然需要使用isnull(@Price,0),但现在它正在工作。非常感谢你。
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