如何解决使用另一个表中的相同ID对列中的SUM值进行SQL查询
我有两个类似下面的表格;
table1
===========================
| table1_ID | table1_name |
===========================
| 1 | A |
| 2 | B |
===========================
table2
======================================
| table2_ID | table2_qty | table2_ID |
======================================
| 22 | 4 | A |
| 23 | 9 | A |
| 24 | 12 | B |
| 25 | 23 | B |
======================================
输出应该是这样的:
================================
| table1_ID | name | total_qty |
================================
| 1 | A | 13 |
| 2 | B | 35 |
================================
“ table2的ID,名称和'table2_qty'的总和与'table1_ID'具有相同的ID”“
我尝试了此方法,但结果与我想要的不一样。
SELECT table1.table1_ID,table1.table1_name,SUM(table2.table2_qty) As total_qty
FROM table1,table2
GROUP BY table1.table1_ID,table1.table1_name;
如何在SQL中获得结果?
谢谢!
解决方法
以下是使用相关子查询的选项:
select t1.*,(
select sum(t2.table2_qty)
from table2 as t2
where t2.table2_id = t1.table1_name
) as total_qty
from table1 as t1
您还可以join
进行汇总:
select t1.table1_id,t1.table1_name,sum(t2.table2_qty) as total_qty
from table1 t1
left join table2 t2 on t2.table2_id = t1.table1_name
group by t1.table1_id,t1.table1_name
,
您可以使用嵌套查询:
import React from "react";
import ReactDOM from "react-dom";
function App() {
return (
<SwapableItems>
<div>
<p swipeMe>Add Props</p>
<div>Don't Add Props</div>
</div>
</SwapableItems>
);
}
function SwapableItems({ children }) {
const content = childrenHandler(children,{ style: { color: "red" } });
return content;
}
const childrenHandler = (children,swipeMeProps) => {
const childEls = React.Children.toArray(children).map((child) => {
const childHasChildren =
child.props.children && React.isValidElement(child.props.children)
? childrenHandler(child.props.children,swipeMeProps)
: undefined;
return childHasChildren
? React.cloneElement(child,{},childHasChildren)
: child.props.swipeMe
? React.cloneElement(child,{ ...swipeMeProps })
: React.cloneElement(child,{});
});
return childEls;
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />,rootElement);
,
本质上,由于您在FROM
子句中使用逗号分隔的表,因此您尝试对交叉联接查询进行汇总。
FROM table1,table2
MS Access使用这种较旧的SQL语法,因为它的方言尚不支持显式CROSS JOIN
来清楚地显示您要尝试的内容。除其他功能外,我还suggested有这种支持。
因此,您的汇总将在两个表的cartesian product上运行,它们成对匹配两个表中的行的
要解决此问题,只需将CROSS JOIN
更改为INNER JOIN
:
SELECT t1.table1_ID,SUM(t2.table2_qty) AS total_qty
FROM table1 t1
INNER JOIN table2 t2
ON t1.table1_ID = t2.table1_ID
GROUP BY t1.table1_ID,t1.table1_name;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。