我有三个表A,B,C。他们的关系是A.id是B的外键而B.id是C的外键。我需要在B.id时加总值= C.id和A.id = B.id,我可以通过查询两次来计算数字。但是现在我需要一些方法来计算一次总和!
select count(C.id) from C,B where C.id = B.id; //return the value X
select count(A.id) from C,B where A.id = B.id; //return the value Y
select X + Y; // count the summation fo X and Y
我该如何优化? THKS! :)
我的问题来自GalaXQL,这是一个SQL互动教程。我有抽象的问题,你可以查看更多细节17.SELECT ... GROUP BY ......有......
答案 0 :(得分:2)
您可以在一个查询中执行这些操作。例如,像这样:
select (select count(*) from C join B on C.id = B.id) +
(select count(*) from C join A on C.id = A.id)
(您的第二个查询不会解析,因为A
不是可识别的表别名。)
无论如何,如果你正在学习SQL,你应该学习的第一件事是现代join
语法。您使用的隐式连接已于15年前过时,并且已成为ANSI标准的一部分超过20年。学习正确的join
语法。
答案 1 :(得分:0)
尝试这样
select sum(cid) (
select count(*) as cid from C join B on C.id = B.id
union all
select count(*) as cid from A join B on A.id = B.id ) as tt
答案 2 :(得分:0)
试试这个:
select
(select count(*) from C join B on C.id = B.id)
union
(select count(*) from C join A on C.id = A.id)