回 帖 发 新 帖 刷新版面

主题:[讨论]难难难,彻夜失眠!!!!!  谁能帮我!

各位大侠好:
 设有表一、表二如下:

表一                            表二
         
姓名   月收入                 姓名  月消费
张三   18888                  张三   5000
李四   1888                  
王五   188

注意:表二中姓名无李四、王五!
请问:如何显示出表三要求?

显示表三
姓名 月收入  月消费
张三  18888   5000
李四  1888     0
王王  188      0




[em8][em1][em10][em12][em9]

回复列表 (共10个回复)

沙发

如果采用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;
}

板凳

sql多表联合查询,不能搞定吗?
你到网上查一下子SQL之类的技巧

3 楼

我试了一下多表联合查询之类的,但如果通过两表的姓名字段相同联接时,
如用下句:select a.姓名,a.月收入,b.月消费 from 表一 a inner join 表二 on a.姓名=b.姓名


则第三表只有一条记录,内容如下:
姓名  月收入  月消费
张三   18888   5000

4 楼

用左外联 或全外联试试
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 楼

显示应该是这样
姓名 月收入  月消费
张三  18888   5000
李四  1888      
王王  188       

 如果没有0  把月消费字段设置默认值为0

6 楼

上楼的哥们说得不错,用left join(好像无 outer)可以部分实现上例问题。

但如果表一、表二如下:

表一                            表二
         
姓名   月收入                 姓名  月消费    年     月份
张三   18888                  张三   3000    2003    5
李四   1888                   张三   5000    2005    3            
王五   188                    张三   4000    2004    7

如何实现只将2005年3月份的数据加入表三???:
姓名 月收入  月消费
张三  18888   5000
李四  1888     0
王王  188      0



7 楼


如果没有0  把月消费字段设置默认值为0,这句有问题
即这个不能实现下表,
姓名 月收入  月消费
张三  18888   5000
李四  1888     0    
王王  188      0

只能实现下表
姓名 月收入  月消费
张三  18888   5000
李四  1888         
王王  188
 
表面上看差不多,但这个很重要,比如再算月收入-月消费就会出问题!
      

8 楼

再加一条件 Where (表二.年=2005 AND 月=5) 可以吗?

9 楼

加?好像不行!加在哪个位置?

10 楼


select 表1.姓名,表1.月收入,表2.月消费 from 表1,表2
where  表1.姓名=表2.姓名(+)

我来回复

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