表结构是这样的:客户消费表 rec_cust_acc(字段:客户ID,餐别ID【早餐/午餐/晚餐】,消费时间)
                            客户信息表base_customers(客户ID,部门ID)
                            部门表base_custdept(部门ID)
                            餐别表base_meal(餐别ID)
需要统计每个部门,每段时间,每种餐别多少次
表关系是这样的:select count(*)from rec_cust_acc where 餐别id = ? and ....
因为客户消费表不存在部门id,不知道怎么关联了,望高手指点
在线等待 

解决方案 »

  1.   

    部门表base_custdept(部门ID)用不到,其他3个表连接起来就可以了
      

  2.   

    select count(a.餐别ID)
    from rec_cust_acc a, base_customers b
    where a.客户ID = b. 客户ID
    group by b.部门ID ,a.消费时间,a.餐别ID如果客户消费表不存在部门id,那么count()会为0
      

  3.   

    base_customers 表里,同一个部门ID是有多条记录的,这样group by b.部门ID就不可以了
      

  4.   

    首先觉得你的表设计的不是很好
    select b.部门ID,
    count(decode(餐别ID,'早餐',1)) 早餐,
    count(decode(餐别ID,'午餐',1)) 午餐,
    count(decode(餐别ID,'晚餐',1)) 晚餐,
    count(a.客户ID) 总计
    from rec_cust_acc a,base_customers b,base_custdept c
    where a.客户ID=b.客户ID and b.部门ID=c.部门ID
    group by b.部门ID,a.消费时间
      

  5.   

    select b.部门ID,
    count(decode(餐别ID,'早餐',1)) 早餐,
    count(decode(餐别ID,'午餐',1)) 午餐,
    count(decode(餐别ID,'晚餐',1)) 晚餐,
    count(a.客户ID) 总计
    from rec_cust_acc a,base_customers b,base_custdept c
    where a.客户ID=b.客户ID and b.部门ID=c.部门ID and b.部门ID=a.部门ID 
    and a.消费时间 between ... and ...
    group by c.部门ID,a.客户ID
      

  6.   

    group by c.部门ID跟select b.部门ID不匹配是会报错的
      

  7.   


    查询条件是b.部门ID=c.部门ID 咋会不一样?
      

  8.   

    b.部门ID 和 c.部门ID不是一 一对应的,base_customers表里同一个部门id有多条记录