有3个表,订单表orderinfo A,订单产品表orderproduct B,回款表payment C,其中A表中有订单日期,操作员
B表中有产品金额
C表中有回款日期,回款金额,操作员列表页面要求显示:
    日期  借方   贷方   余额   操作员请问我怎样将订单日期和回款日期、A表中的操作员和C表中的操作员、产品金额以及回款金额显示在上面的列表中?

解决方案 »

  1.   

    通过订单ID,将A、B、C需要的字段关联起来就可以了。由于你提供的表结构不完成,故不好写SQL。
      

  2.   

    建议你对三个表作关联,ID号作为关联字段,这样的话你可以用一条sql语句查询出3个表中你所需要的字段
      

  3.   

    A 表:order_id,client_id,operator,must_date,register_date,register_pers,order_flag,re;
    B 表:payment_id,order_id,client_id,payment_mode,money,register_pers,payment_date,re;
    C 表: orderpro_id,order_id,product_id,quantity,price,money
      

  4.   

    显示的日期不一定,
    比如:
        A表的订单日期为2004-01-21,操作员为a;
        B表的产品金额为1000.00;
        C表的回款日期为2004-01-22,回款金额为2000,操作员为b;
    那么列表显示为:
        日期         借方      贷方      余额      操作员
    2004-01-21     1000.00             -1000.00      a
    2004-01-22               2000.00    1000.00      b
      

  5.   

    而且order_id也是必不可少的啊
      

  6.   

    建议你把列表改为
    客户id    order_id    借方    贷方    余额    借款操作员  借款日期   还款操作员   还款日期
      

  7.   

    问题具体些撒!不然都不知道怎么帮你写 SQL 语句
      

  8.   

    你的说明中,表结构前后不一,按我的理解如下:
    A表: 记录销售订单:相关字段 order_id,operator,register_date
    B表: 记录销售回款记录:相关字段 order_id,operator,payment_date,money
    C表: 记录订单中产品的销售金额:相关字段 order_id, moeny余额要在SQL中计算在你已经指定了某一订单和产品产品的情况下,相关条件忽略请参考用下面的语句 (9i, 未测试)  SELECT r_date,r_money,p_money,
             SUM(NVL(p_money,0)-NVL(r_money,0)) OVER( ORDER BY register_date),
             operator
        FROM (
             SELECT register_date r_date, money r_money, NULL          p_money,operator
               FROM a, c
              WHERE a.order_id = c.order_id 
              UNION ALL
             SELECT payment_date  r_date,  NULL r_money, payment_money,p_money,operator 
               FROM B 
              )
      

  9.   

    SELECT r_date,r_money,p_money,
             SUM(NVL(p_money,0)-NVL(r_money,0)) OVER( ORDER BY register_date),
             operator
        FROM (
             SELECT register_date r_date, money r_money,
                    NULL p_money,operator
               FROM a, c
              WHERE a.order_id = c.order_id 
              UNION ALL
             SELECT payment_date  r_date,  NULL r_money, 
                    payment_money p_money,operator 
               FROM B 
              )上面的语句多一逗号。
      

  10.   

    SELECT r_date,r_money,p_money,
             SUM(NVL(p_money,0)-NVL(r_money,0)) OVER( ORDER BY register_date),
             operator
        FROM (
             SELECT register_date r_date, money r_money,
                    NULL p_money,operator
               FROM a, c
              WHERE a.order_id = c.order_id 
              UNION ALL
             SELECT payment_date  r_date,  NULL r_money, 
                    payment_money p_money,operator 
               FROM B 
              )
       order by 1
      

  11.   


    SELECT register_date r_date, money r_money,
                    NULL p_money,operator
               FROM a, c
              WHERE a.order_id = c.order_id 
              UNION ALL
             SELECT payment_date  r_date,  NULL r_money, 
                    payment_money p_money,operator 
               FROM B 
    在执行这段sql语句的时候报错:
    ora-01790:表达式必须具有与对应表达式相同的数据类型
      

  12.   

    SELECT register_date r_date, money r_money,
                    0 p_money,operator
               FROM a, c
              WHERE a.order_id = c.order_id 
              UNION ALL
             SELECT payment_date  r_date,  0 r_money, 
                    payment_money p_money,operator 
               FROM B 
      

  13.   

    谢谢onejune4450,我已经搞定了,你太厉害了