求助mysql查询语句,实现三张表数据统计

问题描述

求助mysql查询语句,实现三张表数据统计

temp_instore 、 temp_outstore 、 temp_stock三张表,以temp_stock表数据为主,统计与mate_id、sd_price两个字段值在另外两张表中相等的记录,主要查询出mate_id、sd_price、(sd_quantity + os_quantity - is_quantity) as quantity
就是sd_price与os_price、is_price比较,三者相等按上述进行加减运算,若os_price或is_price与sd_price不等按零处理。可能描述的不是很清楚,举个例子吧:
mate_id=1 and sd_price= 10这条记录,与另外两张表统计时。在temp_outstore表中有条记录mate_id= 1但os_price不等于sd_price,所以按0处理。在tem_instore表中有条记录mate_id=1且is_price= sd_price,所以有值参与运算。最终计算结果是20+0-3=17

这该怎么设计查询语句啊,是连接查询还是怎么弄。不是太会,逻辑这块
以下插入三张表的截图:is_打头的字段是temp_instore表;os_打头的字段是temp_outstore表;sd_打头的字段是temp_stock表。


解决方案

类似这样,没有调测,自己试试,针对是一对一,
 select mate_id,sd_price,sd_quantity+IFNULL(os_quantity,0)-IFNULL(is_quantity,0) quantity from temp_stock tsd left join temp_instore tin on tsd.mate_id=tin.mate_id and tsd.sd_price= tin.is_price
left join temp_outstore tos on tsd.mate_id=tos.mate_id and tsd.sd_price= tos.is_price

如果temp_instore 、 temp_outstore 、 temp_stock是一对多,
select mate_id,sd_price, sum(quantity) quantity from(
select mate_id,sd_price,sd_quantity+IFNULL(os_quantity,0)-IFNULL(is_quantity,0) quantity from temp_stock tsd left join temp_instore tin on tsd.mate_id=tin.mate_id and tsd.sd_price= tin.is_price
left join temp_outstore tos on tsd.mate_id=tos.mate_id and tsd.sd_price= tos.is_price
) group by mate_id,sd_price

时间: 2025-01-20 08:31:14

求助mysql查询语句,实现三张表数据统计的相关文章

mysql查询语句问题-mysql查询语句求助 关于IF ELSE

问题描述 mysql查询语句求助 关于IF ELSE 写一个sql语句查询一个表,当这个sql语句查询没有查询到结果(这个表中没有数据)则执行另外一个sql语句查询另外一个表. 两个表中的数据是相克的,例如:一个表中有了一条外键id为1的数据,则另外一张表中不能有外键id为1的数据.两个表的外键指向了另外一张表的id. 希望高手能解答下!!!!! 万分感谢!!!!!!! 解决方案 这个直接用sql语句好像还不好控制 最好是在java代码里面进行控制 解决方案二: mysql的语法不太懂,我写的是

sql server-求助!SQLServer查询实现由四张表得到新表?最新问题求助!!

问题描述 求助!SQLServer查询实现由四张表得到新表?最新问题求助!! 有四张表:Course.CourseType.Grade.student 表Course: courseID coursename coursetypeID 100001 智育1 001 100002 智育2 002 200001 德育1 001 200002 德育2 002 300001 体育1 001 300002 体育2 002 表:CourseType: coursetypeID typename 001 必修

mysql 数据库-mysql问题:从三个表查询数据优化

问题描述 mysql问题:从三个表查询数据优化 我有三个表,三个表的数据全部查询出来再排序,三个表的数据都很大,如何查询才能最节省资源,最优. 解决方案 可以建一个视图,把你经常要用到的字段放入视图中,当然和你的查询语句也有关系 解决方案二: 楼上说的建视图,有点换汤不换药吧! 大数据量查询,建议去看看索引方面的东西吧

sql语句-如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表。

问题描述 如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表. 有A.B.C三张表如下, 表 A 表B 学生ID(主键) 学生名称 课程ID(主键)| 课程名称 表 C 学生ID 课程ID (联合主键) 那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽. 解决方案 你可以定义2个变量,分别从表A表B用名称查询到ID.在表C的新增语句中使用这2个变量. 不过你这

sql语句如何将三张表所有要的属性显示

问题描述 sql语句如何将三张表所有要的属性显示 SQL大神指教指教,谢谢! 表一:XS Sno Sname Sex birthday Pid class department (表一属性) 表二:CJ Sno Courseno Score (表二属性) 表三:KC Courseno Coursename credit (表三属性) 要求:"用相关查询语句"查询选修课程号为"xx" 的学生的相关信息 解决方案 select XS.Sno, Sname,Sex, bi

sql-SQL 三张表联合查询中间表有空字段的问题

问题描述 SQL 三张表联合查询中间表有空字段的问题 table1(id1).table2(id2id1no).table3(noname)select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no第2张表里面对应的no字段有可能为空,为空的时候就取不到name而不是取no为空的name字段 解决方案

sql-SQL 三张表联合查询其中表有空字段的问题

问题描述 SQL 三张表联合查询其中表有空字段的问题 table1(id1).table2(id2id1no).table3(noname) select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no 第2张表里面对应的no字段有可能为空,为空的时候name就为空,这个要怎么查询才不会有冗余,请指教

三张表的Left Join查询

三张表:A (id,xxx) B(id,xxx) C(id,xxx) 要根据相同的id显示三张表,做Left Join. SELECT XXX FROM ((A LEFT JOIN B ON A.id = B.id) LEFT JOIN C ON A.id = C.id) WHERE B.id Is Not Null From条件后面的括号不能忘了.

mysql查询语句报错,怎么解决?

问题描述 mysql查询语句报错,怎么解决? unexpected token: h near line 1, column 142 [select count(o) from com.hm.dao.entity.Tenant o ,Houserentalinfo r ,com.hm.dao.entity.Houses h where o.id = r.userId and r.houseId = h.id and h.housePurpose = ' 公寓房 ' ] 解决方案 错误日志呢?可能