如何从两个不同的表中选择列(A,B)其中总和(列表A)小于columntableB
问题描述:
我可以选择价格总和(税)小于价格,我正在执行查询但我收到错误如何从两个不同的表中选择列(A,B)其中总和(列表A)小于columntableB
select b.price
from tableA a
inner join tableB b on b.idprice = a.idprice where sum(tax)<price
group by a.idprice,b.price
答
我觉得你ORI ginal方法将使用having
子句而不是where
来工作:
select b.price
from tableA a inner join
tableB b
on b.idprice = a.idprice
group by a.idprice, b.price
having sum(tax) < b.price;
答
所以是这样的:
SELECT t.*,s.*
FROM TableA t
INNER JOIN(SELECT idprice,sum(tax) as sum_tax
FROM TableB
GROUP BY idprice) s
ON(t.idprice = s.idprice and t.price < s.sum_tax)
或者,如果价格表也应该被概括:
SELECT t.idprice,sum(t.price),max(s.sum_tax)
FROM TableA t
INNER JOIN(SELECT idprice,sum(tax) as sum_tax
FROM TableB
GROUP BY idprice) s
ON(t.idprice = s.idprice)
GROUP BY t.idprice
having sum(t.price) < max(s.sum_tax)
您得到的错误是什么? – BuddingProgrammer
你可以发布架构吗?您正在尝试的查询以及您收到的错误将会有很大帮助。也许您可以使用http://sqlfiddle.com/ – kkaosninja
重现它。聚合可能不会出现在WHERE子句中,除非它位于包含在HAVING子句或选择列表中的子查询中,并且要聚合的列是外部引用。 my erorr – SAMAN