2010-01-02 97 views
-1

我有我该如何做这个SQL查询?

  • 员工表(ENO,FName参数,LNAME,出生日期,告诉,地址,工资,PNO,BNO)

//客户表表示关于客户端

所有数据

// CID是客户端的数目

  • 表客户(CID,FName参数,LName的,地址,告诉,Cbalance,...)

//机芯表代表所有任务的客户端可以做 // MID是运动的数量// M_type是任务的类型

  • 表运动(MID,M_type)// M_type作为存入,回抽.....

//工作表是STOR从任何客户端的所有活动做

  • 工作表(WID,CID,C_value,MID,DOBmovement,伊诺)

我怎么能:

  1. 制作查询检索有关谁曾担任该员工的所有数据客户的最大数量。

  2. 在每个月末您的余额可能会因存款或付款流程而更改,因此您必须在此流程之后找到最终余额。

以Sql语言。

+0

这是功课吗? – Blorgbeard 2010-01-02 20:47:58

+0

没有..其书中的问题 – wasim 2010-01-02 20:56:18

+0

作业很糟糕的专栏。或者就此而言,一本书。 – 2010-01-02 21:01:10

回答

1

(1)为了弄清楚有多少客户是由每个员工提供服务,尽量考虑这些运营商:

  • DISTINCT - 获得独特的CID/EID对在工作表
  • GROUP BY和COUNT - 让CID值的数量为每EID
  • ORDER BY和FIRST - 让从组最大COUNT(CID)的EID

一旦你弄清楚如何获得CORRE CT EID这种方式,那么你可以使用你中写道:作为一个子查询的代码的简单

SELECT * FROM EMPLOYEES WHERE EID=... 

(2)从你的问题的信息,目前还不清楚如何找到期末余额,因为起始平衡不明显存在。也许你应该根据数据库中的所有存款和取款进行计算,从假定的零起始余额中计算出来?如果是这样的话,那么尝试思考

  • JOIN与运动的工作,这样就可以区分合并表中
  • SUM从取款存款拿到总存款和总提款
  • 如果答案应该是为每个客户,然后GROUP BY,否则只是一个简单的WHERE,以获得特定客户的价值