主题:[讨论]难难难,彻夜失眠!!!!! 谁能帮我!
xiulin
[专家分:200] 发布于 2006-05-19 17:16:00
各位大侠好:
设有表一、表二如下:
表一 表二
姓名 月收入 姓名 月消费
张三 18888 张三 5000
李四 1888
王五 188
注意:表二中姓名无李四、王五!
请问:如何显示出表三要求?
显示表三
姓名 月收入 月消费
张三 18888 5000
李四 1888 0
王王 188 0
[em8][em1][em10][em12][em9]
回复列表 (共10个回复)
沙发
lihaifeng0412 [专家分:2270] 发布于 2006-05-19 19:50:00
如果采用c++编写, 如下:
#include <iostream>
# include <iomanip>
using namespace std;
struct table
{ char* name;
double monthsalary;
double monthcost;
} ;
void main ( )
{
table table1[3]=
{
{"张三",18888,5000},
{"李四", 1888,0},
{"王五",188,0}
};
cout <<"表一"<<endl<<endl;
cout<<setiosflags(ios_base::left);
cout<<setw(10)<<"姓名"<<setw(10)<<"月收入"<<endl;
cout <<setw(10)<<table1[0].name<<setw(10)<<table1[0].monthsalary<<endl;
cout <<setw(10)<<table1[1].name<<setw(10)<<table1[1].monthsalary<<endl;
cout <<setw(10)<<table1[2].name<<setw(10)<<table1[2].monthsalary<<endl;
cout <<endl<<endl<<endl<<endl;
cout <<"表二"<<endl<<endl;
cout <<setw(10)<<"姓名"<<setw(10)<<"月消费"<<endl;
cout <<setw(10)<<table1[0].name<<setw(10)<<table1[0].monthcost<<endl;
cout <<endl<<endl<<endl<<endl;
cout <<"表三"<<endl<<endl;
cout <<setw(10)<<"姓名"<<setw(10)<<"月收入"<<setw(10)<<"月消耗"<<endl;
cout <<setw(10)<<table1[0].name<<setw(10)<<table1[0].monthsalary<<setw(10)<<table1[0].monthcost<<endl;
cout <<setw(10)<<table1[1].name<<setw(10)<<table1[1].monthsalary<<setw(10)<<table1[1].monthcost<<endl;
cout <<setw(10)<<table1[2].name<<setw(10)<<table1[2].monthsalary<<setw(10)<<table1[2].monthcost<<endl;
}
板凳
长尾兔 [专家分:3630] 发布于 2006-05-20 18:23:00
sql多表联合查询,不能搞定吗?
你到网上查一下子SQL之类的技巧
3 楼
xiulin [专家分:200] 发布于 2006-05-20 18:37:00
我试了一下多表联合查询之类的,但如果通过两表的姓名字段相同联接时,
如用下句:select a.姓名,a.月收入,b.月消费 from 表一 a inner join 表二 on a.姓名=b.姓名
则第三表只有一条记录,内容如下:
姓名 月收入 月消费
张三 18888 5000
4 楼
wbyoulove [专家分:4830] 发布于 2006-05-20 20:28:00
用左外联 或全外联试试
select a.姓名,a.月收入,b.月消费 from 表一 a left outer join 表二 on a.姓名=b.姓名
select a.姓名,a.月收入,b.月消费 from 表一 a full outer join 表二 on a.姓名=b.姓名
5 楼
wbyoulove [专家分:4830] 发布于 2006-05-20 20:29:00
显示应该是这样
姓名 月收入 月消费
张三 18888 5000
李四 1888
王王 188
如果没有0 把月消费字段设置默认值为0
6 楼
xiulin [专家分:200] 发布于 2006-05-21 17:16:00
上楼的哥们说得不错,用left join(好像无 outer)可以部分实现上例问题。
但如果表一、表二如下:
表一 表二
姓名 月收入 姓名 月消费 年 月份
张三 18888 张三 3000 2003 5
李四 1888 张三 5000 2005 3
王五 188 张三 4000 2004 7
如何实现只将2005年3月份的数据加入表三???:
姓名 月收入 月消费
张三 18888 5000
李四 1888 0
王王 188 0
7 楼
xiulin [专家分:200] 发布于 2006-05-22 09:42:00
如果没有0 把月消费字段设置默认值为0,这句有问题
即这个不能实现下表,
姓名 月收入 月消费
张三 18888 5000
李四 1888 0
王王 188 0
只能实现下表
姓名 月收入 月消费
张三 18888 5000
李四 1888
王王 188
表面上看差不多,但这个很重要,比如再算月收入-月消费就会出问题!
8 楼
baige0228 [专家分:110] 发布于 2006-05-23 01:58:00
再加一条件 Where (表二.年=2005 AND 月=5) 可以吗?
9 楼
xiulin [专家分:200] 发布于 2006-05-23 08:53:00
加?好像不行!加在哪个位置?
10 楼
delphibxh521 [专家分:10] 发布于 2006-05-25 15:05:00
select 表1.姓名,表1.月收入,表2.月消费 from 表1,表2
where 表1.姓名=表2.姓名(+)
我来回复