2 qq 24835349 qq_24835349 于 2016.03.28 08:28 提问

条件复杂的sql语句查询
sql

有三张表 分别为 会员表(member) 销售表(sale) 退货表(regoods)
会员表有字段 memberid (会员id,主键) credits(积分);
销售表有字段 memberid(会员id ,外键) 购买金额(MNAccount);
退货表中有字段memberid(会员id ,外键) 退货金额(RMNAccount);
业务说明 : 1、销售表中的销售记录可以是会员购买,也可是非会员购买。(即销售表中的memberid可以为空)
2、销售表中的一个会员可以有多条购买记录
3、退货表中的退货记录可以是会员,也可是非会员
4、一个会员可以有一条或多条退货记录
查询需求 : 分组查出销售表中所有会员购买金额,同时分组查出退货表中所有会员的退货金额,把会员id相同的购买金额-退款金额得到的结果更新到表会员表中对应会员的积分字段(credits)

3个回答

qq_25275583
qq_25275583   2016.03.28 10:48

select s.memberid, s.y1, s1.y2, (s.y1 - s1.y2)
from (select y.memberid, sum(y.MNAccount) y1
from member d
left join sale y
on d.memberid = y.memberid
group by y.memberid) s
left join (select y.memberid, sum(y.RMNAccount) y2
from member d
left join regoods y
on d.memberid = y.memberid
group by y.memberid) s1
on s.memberid = s1.memberid

    这个可以一次查出你需要的所有数据,至于插值。这个SQL 查询只查ID 和金额差。 写个存储插进去就好。
qq_25275583
qq_25275583 回复qq_24835349: 晚一点! 上班中囧!
2 年多之前 回复
qq_24835349
qq_24835349 金额差,我也查出来了,就是更新到会员表有点问题,存储不太懂,还望明叙
2 年多之前 回复
zengna
zengna   2016.03.28 09:45

我个人觉得用一个sql语句好像有些困难,建议写存储过程来实现,好久不用,也记不大太多
下面是分组查出销售表中所有会员购买金额的sql语句:
select sum(sale.MNAccount) from sale, member where sale.member_id=member.id group by member.id;

希望能对你有帮助!

CSDNXIAOD
CSDNXIAOD   2016.03.30 11:28

oracle sql语句复杂查询
sql 语句实现简单查询和复杂查询
解析Oracle中sql语句的复杂查询
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
sql语句复杂查询的思路
1:看sql中是否有统计函数,如果有要想到group by。 2:根据条件看需要几张表,还是自身关联。 3:看是否需要左外连接等。 4:where条件,消除笛卡尔积。 5:having过滤。 6:order by。 7:一般可在from和where后加子查询(子查询中也适用以上条件)。
解析Oracle中sql语句的复杂查询
在sql语句中查询使用的频率最高,也是难点,特别是
第7讲-SQL语言复杂查询-(NOT) in语句
有的时候会有以下条件的判断:       1)某一元素是否是某一集合的成员       2)集合之间的比较,某一集合是否属于另一集合       3)测试集合是否为空       4)判断集合是否有重复的元组        ...... 子查询的定义:出现在where语句的select语句被称为子查询。子查询返回一个集合,可以通过这个集合的比较来确定另一个集合。
C#连接SQL多条件复杂查询
 控件说明:供应商 CheckedBox   ckbID                        供应商 MasktextBox       mtxtID              价格 CheckedBox       ckPirce                     价格      MasktextBox        mtxtPrice         价格    
Hibernate书写原生SQL语句查询(用于复杂多表查询)
package Bean; //原生sql查询 import java.util.Arrays; import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.T
sql 中用case when实现复杂的条件查询
 近期做一个项目,实现不同条件下的不同补助类型的计算,由于后续补助的类型,金额都有可能有大的改动,考虑再三决定全部在sql server存储过程中实现,为后续的修改留足空间和余地,其中用到case....when语句,感觉功能挺强大的,对付很多有复杂逻辑的操作,不失是一种好的解决办法,代码如下,大家可以参考语法规则,看一看,希望对大家的学习有帮助.CREATE PROCEDURE [dbo].
使用NutzDao进行复杂SQL条件查询
使用NutzDao进行复杂SQL条件查询 NutzDao中支持对数据的多种复杂查询,用户可以很方便的查询到想得到的数据。 使用Cnd对象按条件查询 org.nutz.dao.Dao接口的query方法的第二个参数提供了SQL条件查询功能,这个参数是org.nutz.dao.Cnd对象,它是org.nutz.dao.Condition接口的实现类。该类中包含两个方法:Cnd.wra
C# SQL多条件查询拼接技巧
本文转载http://www.cnblogs.com/zfanlong1314/p/3874910.html #region 多条件搜索时,使用List集合来拼接条件(拼接Sql) StringBuilder sql = new StringBuilder("select * from PhoneNum"); List wheres = new List(
hive 数据查询复杂SQL
排序和聚集   正常在数据少的情况下 直接使用order by来操作即可,因为是全排序所以要在一个reduce中完成   from records select year,temperature order by year asc,temperature desc;     如果数据量大,并且不需要全排序,只是需要每个reduce中的数据排序即可。如下根据year来指定(dis
SQL复杂查询
I.连接查询定义 前一篇中提到的查询都是针对单个表的。若一个查询涉及到两个以上的表,则称之为连接查询。连接查询是关系型数据库中的主要查询,包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询等。1、等值与非等值连接查询一般格式 [表名1.]<列名1> <比较运算符> [表名2.]<列名2> 其主要运算符有:=、>、<、>=、<=、!=(或<>)等;当比较运算