mysql - sum() 列用于相同 id 的多个查询并显示到连接表

标签 mysql

我可以选择一列的总和并将其显示到与其连接的另一个表吗?

tblmedstockin
+--------------+-------+-----------------+-------------+----------------+
| medstockinid | medid | stockinquantity | stockindate | stockinexpdate |
+--------------+-------+-----------------+-------------+----------------+
|            1 |  1001 |             100 | 2019-01-29  | 2019-12-16     |
|            2 |  1001 |             100 | 2019-01-29  | 2019-12-16     |
|            3 |  1001 |              12 | 2019-01-29  | 2019-01-29     |
|            5 |  1004 |               4 | 2019-01-29  | 2019-01-29     |
|            6 |  1004 |              20 | 2019-01-30  | 2019-01-30     |

预期结果:

tblmedstock
+------------+-------+----------+-----------+-----------------+--------------+
| medstockid | medid | category | medname   | stockinquantity | stockcritqty |
+------------+-------+----------+-----------+-----------------+--------------+
|       1001 |  1001 | Tablet   | Losartan  |             212 |          100 |
|       1004 |  1004 | Tablet   | Metformin |              24 |          100 |
+------------+-------+----------+-----------+-----------------+--------------+

我想要对 tblmedstockin 中的多行求和 (stockinquantity) 并将其显示为 tblmedstock 上的列。

尝试了此代码,但必须手动更改每个查询的 id:

select a.medstockid, c.medid, c.category, c.medname, (select sum(stockinquantity)from tblmedstockin where medid = 1001) as stockinquantity, a.stockcritqty from tblmedstock a inner join tblmedstockin b on a.medstockinid = b.medstockinid inner join tblmedicine c on a.medid = c.medid where a.medid = 1001

-> union

-> select a.medstockid, c.medid, c.category, c.medname, (select sum(stockinquantity)from tblmedstockin where medid = 1004) as stockinquantity, a.stockcritqty from tblmedstock a inner join tblmedstockin b on a.medstockinid = b.medstockinid inner join tblmedicine c on a.medid = c.medid where a.medid = 1004;

能不能不用手动设置id就自动完成?

最佳答案

您只需要(按原样)连接表并在此处使用 GROUP BY(此处对表关系进行一些假设):

select a.medstockid, c.medid, c.category, c.medname, sum(b.stockinquantity), a.stockcritqty 
from tblmedstock a 
   Removed since this doesn't appear to be used in this query*/
   inner join tblmedstockin b on a.medstockinid = b.medstockinid*/
   inner join tblmedicine c on a.medid = c.medid 
WHERE a.medid in (1001,1004)
GROUP BY a.medstockid, c.medid, c.category, c.medname, a.stockcritqty

关于mysql - sum() 列用于相同 id 的多个查询并显示到连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444213/

相关文章:

php - 为这些表选择查询

java - TransactionManager read-only=true 不适用于 mysql ReplicationDriver

php - Artisan 无法连接到 mysql - Laravel 4.2

php - 从 MySQL 到 PHP 页面选择数据时遇到问题

php - 如果行为空,则回显默认文本,否则回显显示数据

mysql - 表不存在,但确实存在

python - 日期格式不正确。隐藏密码的方法? Excel、Python、MySQL

php - 将多维数组拆分为单个数组 :PHP

mysql - 健康检查导致 'Got an error reading communication packets' 消息

php - CakePHP 3.0 在哪里放置查询