如何从两个不同的表中选择列(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 
+0

您得到的错误是什么? – BuddingProgrammer

+0

你可以发布架构吗?您正在尝试的查询以及您收到的错误将会有很大帮助。也许您可以使用http://sqlfiddle.com/ – kkaosninja

+0

重现它。聚合可能不会出现在WHERE子句中,除非它位于包含在HAVING子句或选择列表中的子查询中,并且要聚合的列是外部引用。 my erorr – SAMAN

我觉得你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) 
+0

但无效(您的查询中的税,t.price – SAMAN

+0

查询中出现此错误(消息207,级别16,状态1,行3 无效的列名称'税' 消息207,级别16,状态1 ,第6行 无效的列名“价格”。) – SAMAN

+0

因此,请将其更改为您的列名称。我不是魔术师,我不能猜测它们,也尝试工作。@saman – sagi