回 帖 发 新 帖 刷新版面

主题:select查询问题

有三个表:
客户表
帐号   水表编号   用户地址   用户名称
001    b001       
001    b002
002    b003
003    b004
水表录入表
帐号   水表编号   初始读数   水表止数  月份
001    b001        1          5         1
001    b002        1          3         1
002    b003        0          8         1
003    b004        0          6         1
收费表
帐号   应交水费   实收水费   交费日期
001     16         16
002     16         16
003     12         12
查询后得到的结果表
帐号  水表编号   用户名称  初始读数  水表止数  月份  应交水费   实收水费  交费日期
001   b001                  1          5        1     16         16
请各位大师多多帮助,这里谢谢了

回复列表 (共9个回复)

沙发

查询后得到的结果表就一条记录吗?

板凳


多条记录

3 楼

试试看:
SELECT a.水表编号,a.用户名称,b.初始读数,b.水表止数,b.月份,c.应交水费,c.实收水费 ,c.交费日期 ;
  from 客户表 a inner join 水表录入表 b   inner join 收费表 c on a.帐号=b.帐号 on b.帐号=c.帐号 ;
 where a.水表编号="001"

4 楼

全部记录:


SELECT a.水表编号,a.用户名称,b.初始读数,b.水表止数,b.月份,c.应交水费,c.实收水费 ,c.交费日期 ;
  from 客户表 a inner join 水表录入表 b   inner join 收费表 c on a.帐号=b.帐号 on b.帐号=c.帐号

5 楼

特别谢谢你的帮助.
初测有重复行,我在清除数据进一步测试.

6 楼

一个帐号一块水表的可以,一个帐号多块水表就有重复行了

7 楼

你想怎么处理多条记录???

8 楼

我的意思是:就是你写的查询应得到的结果,但是,有的记录一样的结果显示三行.(就是一个帐号多块水表)

9 楼

你的数据有问题:收费表中一个帐号记录的应该是这个用户多个水表数据的合计,而你要的是每个水表的,也就是由你定义的收费表不可能得到你要的结果(得到数据也不正确)

*!*    有三个表:
*!*    客户表
CREATE CURSOR kh (id i, 帐号 c(3), 水表编号 c(4), 用户地址 c(3), 用户名称 c(3) )
INSERT INTO kh VALUES (1, '001', 'b001', 'A', 'a')       
INSERT INTO kh VALUES (2, '001', 'b002', 'A', 'a')       
INSERT INTO kh VALUES (3, '002', 'b003', 'C', 'c')       
INSERT INTO kh VALUES (4, '003', 'b004', 'D', 'd')       

*!*    水表录入表
CREATE CURSOR sb (id i, 帐号 c(3), 水表编号 c(4), 初始读数 i, 水表止数 i, 月份 i)
INSERT INTO sb VALUES (1, '001', 'b001', 1, 5, 1)
INSERT INTO sb VALUES (2, '001', 'b002', 1, 3, 1)
INSERT INTO sb VALUES (3, '002', 'b003', 0, 8, 1)
INSERT INTO sb VALUES (4, '003', 'b004', 0, 6, 1)

*!*    收费表(!!注意:增加了‘水表编号’字段!!)
CREATE CURSOR sf (id i, 帐号 c(4), 水表编号 c(4), 应交水费 i, 实收水费 i, 交费日期 d)
INSERT INTO sf VALUES (1, '001', 'b001', 16, 16, DATE())
INSERT INTO sf VALUES (2, '002', 'b003', 16, 16, DATE())
INSERT INTO sf VALUES (3, '003', 'b004', 12, 12, DATE())
INSERT INTO sf VALUES (3, '001', 'b002', 10, 10, DATE())  && (add)

*!*    查询后得到的结果表
*!*    帐号  水表编号   用户名称  初始读数  水表止数  月份  应交水费   实收水费  交费日期
*!*    001   b001                  1          5        1     16         16
*!*    请各位大师多多帮助,这里谢谢了

SELECT a.帐号, a.水表编号, a.用户名称, b.初始读数, b.水表止数, b.月份, c.应交水费, c.实收水费, c.交费日期 ;
    from kh a ;
    inner join sb b on a.帐号=b.帐号 AND a.水表编号=b.水表编号 ;
    inner join sf c on b.帐号=c.帐号 AND b.水表编号=c.水表编号 ;
    ORDER BY a.帐号, a.水表编号

这样才是你要的?


我来回复

您尚未登录,请登录后再回复。点此登录或注册