如何用一个dbgrid显示出两个数据表中同时共有的字段?高手请进....(100分)

  • 主题发起人 主题发起人 yzzhoux
  • 开始时间 开始时间
Y

yzzhoux

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用一个dbgrid显示出从不同的两个数据表中查询到同名的共同的字段?
如一个table1中有字段学号,姓名,年龄,出生年月,语文等
          1 张三 20 1980.6  78
2. 李四 19 1981.2 80
另一个table2中有字段学号,姓名,学期,语文,数学,外语等
           1 张三 1  80 67  78
           1 张三 2  66 77  85
           1  张三 3  60 74 79
若我想用query查询table1,table2中学号,姓名再用dbgrid显示出两个table中共同的字段
如下查询结果:
         学号 姓名 语文
         1. 张三  78
         1.  张三 80
1. 张三  66
         1. 张三  60
这个结果将用什么样的方法显示出来?有什么更好的方法但我只能用一个dbgrid显示查询的结果!
希望高手能详细讲解一下或给个范例,高分给你!这个问题很急,请各位大侠出手解决它...
我的email yzzhoux@163.net
 
这是个很普通的一对多关系呀,一个SELECT就出来了,你肯定会,我就不罗嗦了。
只是这个数据表结构不符合第三范式,谁设计的?
 
select 学号, 姓名, 语文 from table2 where table2.学号=table1.学号
 
应该是:select table1.学号,table1.姓名,table1.语文,
table2.学号,table2.姓名,table2.语文
from table11,table2
where table2.学号=table1.学号
group by 学号,姓名,语文
但是你的表结构确实很不合理,建议修改
 
表的结构有问题!
你没觉得用起来很别扭吗?
 
表的结构有问题!!!!!!!!!!!
sql语句一点都不难写。
 
自己绕自己,SQL很好写,听大家的意见,改改表吧
 
你是不是delphi菜鸟啊!
nba!
 
7位朋友不好意思,问题表达有错误,特此更正,(本人表达能力不太好,以致于问题问错,望各位谅解!)
如一个table1中有字段学号,姓名,年龄,出生年月,语文等         
1 张三 20 1980.6  78
2. 李四 19 1981.2 80
另一个table2中有字段学号,姓名,学期,语文,数学,外语等
           1 张三 1  80 67  78          
1 张三 2  66 77  85
           1  张三 3  60 74 79
若我想用query查询table1,table2中记录,再仅用1个dbgrid显示
如下查询结果dbgrid中显示:       
  学号 姓名 语文 (dbgrid中仅有此3个字段名)
         1. 张三  78  (此项来自table1)       
1.  张三 80 (以下3项来自table2)
1. 张三  66
         1. 张三  60
不同表的记录显示在不同行上,应采用何种方法解决?请高手指点
 
这样的结构不好,select的结果就是笛卡儿积这样的集合。想要你的结果很困难。
你的问题可以通过更好的数据库结构来解决。没必要浪费精力在这上面。
改库结构吧!
 

若是只对此两表,SQL如下
select 学号 姓名 语文 
from table1
union
select 学号 姓名 语文 
from table2
我的理解正确吗?
 
呵呵,很可爱
 
to Crab
什么意思?
 
这样的表结果不好。你table1中的语文成绩和你table2中的各学科成绩有什么关系?
想不懂你为什么这样设计?而且这样查出来的有什么意义?不同学期的,加上一个意义不明的?
 
1、Table1和Table2数据冗余严重;
2、Table1的成绩字段根本不能说明什么东西;
3、改改表结构!
 
不能用union,他会消除相同项。
要用union all
不多说了,接受答案吧!
 
接受答案了!谢谢大家的关心。
 
还没给分,赶的上!YZZHOUX老兄,别忘了给我一点分:)!
 
多人接受答案了。
 
后退
顶部