主题:select查询问题
笨兔
[专家分:300] 发布于 2009-03-24 20:43:00
有三个表:
客户表
帐号 水表编号 用户地址 用户名称
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个回复)
沙发
cbl518 [专家分:57140] 发布于 2009-03-24 20:51:00
查询后得到的结果表就一条记录吗?
板凳
笨兔 [专家分:300] 发布于 2009-03-24 20:55:00
多条记录
3 楼
cbl518 [专家分:57140] 发布于 2009-03-24 21:03:00
试试看:
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 楼
cbl518 [专家分:57140] 发布于 2009-03-24 21:04:00
全部记录:
SELECT a.水表编号,a.用户名称,b.初始读数,b.水表止数,b.月份,c.应交水费,c.实收水费 ,c.交费日期 ;
from 客户表 a inner join 水表录入表 b inner join 收费表 c on a.帐号=b.帐号 on b.帐号=c.帐号
5 楼
笨兔 [专家分:300] 发布于 2009-03-24 21:38:00
特别谢谢你的帮助.
初测有重复行,我在清除数据进一步测试.
6 楼
笨兔 [专家分:300] 发布于 2009-03-24 22:27:00
一个帐号一块水表的可以,一个帐号多块水表就有重复行了
7 楼
cbl518 [专家分:57140] 发布于 2009-03-24 23:59:00
你想怎么处理多条记录???
8 楼
笨兔 [专家分:300] 发布于 2009-03-25 05:53:00
我的意思是:就是你写的查询应得到的结果,但是,有的记录一样的结果显示三行.(就是一个帐号多块水表)
9 楼
狐说八道 [专家分:860] 发布于 2009-04-06 10:01:00
你的数据有问题:收费表中一个帐号记录的应该是这个用户多个水表数据的合计,而你要的是每个水表的,也就是由你定义的收费表不可能得到你要的结果(得到数据也不正确)
*!* 有三个表:
*!* 客户表
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.水表编号
这样才是你要的?
我来回复