一个sql的问题,请指教。

问题描述

有5张表,分别是登陆记录表,签到记录表,用户积分表,下载记录表,抽奖记录表,这五张表里面都有一个字段-phone,如果用户执行操作登陆、签到、下载动作、执行抽奖,分别会在这四张表里插入一条数据(四个单独的动作),其中用户积分表里面的结构就是用户id,现在积分,两个字段,我如何写一个sql,能查出这种格式的数据,请指教。  电话     登陆次数     签到次数    积分数量    下载次数  抽奖次数135*       5                   5               5               5                5138*       5                   5               5               5                5180*       5                   5               5               5                5

解决方案

select a.phone 电话,count(distinct a.id) 登陆次数,count(distinct b.id) 签到次数,count(distinct c.id) 积分数量,count(distinct d.id) 下载次数,count(distinct e.id) 抽奖次数from 登陆记录表 a,签到记录表 b,用户积分表 c,下载记录表 d,抽奖记录表 ewhere a.phone = b.phoneand a.phone = c.phoneand a.phone = d.phoneand a.phone = e.phonegroup by a.phone
解决方案二:
第一为正解。引用select c.phone 电话, count(a.phone) 登陆次数, count(b.phone) 签到次数, distinct c.现在积分 积分数量, count(d.phone) 下载次数, count(e.phone) 抽奖次数 from 登陆记录表 a, 签到记录表 b, 下载记录表 d, 抽奖记录表 e, 用户积分表 c where a.phone = b.phone and a.phone = c.phone and a.phone = d.phone and a.phone = e.phone group by c.phone这里有个积分的统计。如果每次插入的积分数据是用户当前的积分的话,直接去用户当前积分。如果每次插入的积分数据是用户每登陆一次送的积分的话,那么就得统计该积分数据中,每次送的积分和,如:sum(c.积分)
解决方案三:
select c.phone 电话, count(a.phone) 登陆次数, count(b.phone) 签到次数, distinct c.现在积分 积分数量, count(d.phone) 下载次数, count(e.phone) 抽奖次数 from 登陆记录表 a, 签到记录表 b, 下载记录表 d, 抽奖记录表 e, 用户积分表 cwhere a.phone = b.phone and a.phone = c.phone and a.phone = d.phone and a.phone = e.phone group by c.phone

时间: 2024-10-27 15:38:33

一个sql的问题,请指教。的相关文章

c++书上的一个问题,初学者 请多多指教

问题描述 c++书上的一个问题,初学者 请多多指教 #include using namespace std; class Point{ public: Point() :x(0), y(0){ cout << "Constructor called." << endl; } ~Point(){ cout << "Destructor called." << endl; } int getX() const{ retu

数据-linq to sql 查询问题,请指教

问题描述 linq to sql 查询问题,请指教 我有三个表,A表:id,departmentcode,suppliercode b表:departmetcode c表"suppliercode怎么样用linq to sql 把这三个表连接起来.然后根据A表的查询条件显示呀比如A表的id=1,我一查询就出现多条记录, 我现在是想显示一条记录,然后把b表,c表的数据代出来. 解决方案 var result =from a in tableA join b in Tableb on a.depat

vb.net如何取得access的数据,并赋给一个变量?请指教

问题描述 vb.net如何取得access的数据,并赋给一个变量?请指教 解决方案 解决方案二:importssystem.dataimportssystem.data.oldebdimsConasstring="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db.mdb"dimsValasstring=string.emptydimdaasnewoledbdataadapter("selcet*fromt_userwhereid='

需要做一个控件实现数据对输入功能,用Dictionary来存数据,Key取自数据库,Value为输入值,请指教!

问题描述 一个录入界面,用控件来实现.使用Dictionary<string,string>_values=newDictionary<string,string>()来存数据,界面如下:移交部门Value数量Value单位名称Value价值Value格式为一个表格形式,Key的值取自数据库,Value为一个文本框需要输入数据,控件能把一对对的Key和value值存到_values里,然后写入数据库.该怎么实现请指教.谢谢!privatevoidShowDataAsHTML(Htm

我在gridview里点击“选择”按钮,希望弹出窗口,在弹出窗口操作完毕后关闭,返回值给父窗口,并对父窗口的数据源重新绑定以刷新gridview。我这么做是不能刷新gridview的,请指教。

问题描述 我在gridview里点击"选择"按钮,希望弹出窗口,在弹出窗口操作完毕后关闭,返回值给父窗口,并对父窗口的数据源重新绑定以刷新gridview.我这么做是不能刷新gridview的,请指教.前端asp.net代码:<asp:GridViewID="GridView1"runat="server"Width="860px"AllowPaging="True"AutoGenerateColum

oracle中如何使用视图,索引,存储过程。 就是说怎么去用或者用在什么地方,请指教

问题描述 oracle中如何使用视图,索引,存储过程. 就是说怎么去用或者用在什么地方,请指教 oracle中如何使用视图,索引,存储过程. 就是说怎么去用或者用在什么地方,请指教 解决方案 具体你去看书,这里只是简单说说:视图,相当于虚拟的表,你可以把不同的表连接起来得到一个视图,直接像表那样返回数据,而不用写复杂的查询了.索引,顾名思义,对表中的数据预处理,加快查询的速度.存储过程,一组预先写好的sql代码的集合,可以直接调用.存储过程因为是事先写好,并且编译的,所以更快,而且它像函数那样,

寻解决方案:利用DataTable中每个行DataRow信息,连接数据库取数将结果存放到此DataRow中的信息结果列中。在线等!请指教!

问题描述 我的这个方案是要完成两个或多个DataTable的四则运算,运算是通过DataTable中共有的"时间"和"单位"列来关联运算,但是现在有一个问题是如果DataTable中"2007年1月"对应于有700多个单位,那这些表都具有700多行记录,如果正常取数的话.用每条记录信息生成条件,查询数据库返回结果信息大概是0.5秒钟,如果遍历DataRow顺序执行700多条记录,需要耗时350秒,如果有六七个DataTable参与运算,那时间还要

js 对象引用:请指教对象直接量中引用this的问题

如下代码: (1)   var xx = function() {  this.a = "xx";  this.b = this.a;  }  alert(new xx().b);  (2) var x = function() {  this.a = "x";  this.b = {a:"x.b",b:this.a,c:function(){return this.a;}};  }  var s = new x();  alert(s.b.c(

ActiveMQ如何实现2个应用通讯之间保持松耦合的关系的,请指教

问题描述 ActiveMQ如何实现2个应用通讯之间保持松耦合的关系的,请指教 ActiveMQ是一个很好的消息中间件,两个应用程序可以在对方系统不启动或者不知道对方网络位置的情况下保持正确的消息传输, 听说有个传输通道,这个传输通道是如何实现的,请高手指教 解决方案 消息队列 没有被处理就一直保存着 解决方案二: 消息队列中的消息是保存在数据库中还是保存在一个文件中?或者说消息队列的本质是什么