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
我对简单的事情有一个复杂的查询,但我已经设法让它工作了。当 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