一个小SQL问题,得分最容易(10分)

  • 主题发起人 主题发起人 zhoufujin
  • 开始时间 开始时间
Z

zhoufujin

Unregistered / Unconfirmed
GUEST, unregistred user!
有三个表 B1,B2,B3
Biao1 有三个字段 n1、n2、n3
Biao2 有三个字段 C1、C2、C3
Biao3 有四个字段 D1、D2、D4、D4
每三个表有5各纪录。
有一个DBGrid1 和一个TQuery1
写一个SQL语句,使这三个表的十个字段
同时在这个DBGrid1中显示出来,并且只出现5个纪录
这个SQL语句怎么写?
下面这个是错误的(因为DBGrid1中纪录大于5个)
Select * From B1,B2,B3
分不够再加
 
表之间有没有什么联系的
 
Select * From B1,B2,B3 limit 5[?]
 
表之间没有联系,使用Limit 5 语法通不过(InterBase不支持)
 
select B1.*,B2.*,B3.* from B1,B2,B3
 
select B1.*,B2.*,B3.* from B1,B2,B3
我试过了不行,每个表里的纪录都列一次,共15个纪录,我只是想在
DBGrid1 中见到:
n1、n2、n3、 C1、C2、C3、D1、D2、D4、D4
1 值 值 值 值 值 值 值 值 值 值
2 值 值 值 值 值 值 值 值 值 值
3 值 值 值 值 值 值 值 值 值 值
4 值 值 值 值 值 值 值 值 值 值
5 值 值 值 值 值 值 值 值 值 值
===============以下不应再出现记录了!!!!!
大家明白了?


 
如果你的表中记录大于5,而你用dbgride不想显示那么多,是不能实现的,我建议你使用
listview手动输入你想要得值,这样想输入几条都可以
 
Sql Server中:
SET ROWCOUNT 5
select B1.*,B2.*,B3.* from B1,B2,B3
 
select top 5 B1.*,B2.*,B3.* from B1,B2,B3
 
To yf_zq:
"SET ROWCOUNT 5"服务器不认啊!!我用的是Interbase 6.5
帮忙啊!真的无法做到码?

 
用临时表啊!真是的!
 
Select IDENTITY(int,1,1) As Id1,* Into #tmp1 From B1
Select IDENTITY(int,1,1) As Id2,* Into #tmp2 From B2
Select IDENTITY(int,1,1) As Id3,* Into #tmp3 From B3
Select * From #tmp1,#tmp2,#tmp3 Where #tmp1.Id1=#tmp2.Id2 And #tmp1.Id1=#tmp3.Id3
 
Select * DISTINCT From B1,B2,B3
不知道怎么样
 
king.gray ... 好方法.
 
To king.gray:
您的方法也行不通,在Interbase 6.5 的工具软件IBConsole中都同不过语法检查,
可能是SQL语法不一样吧,诸位请给我出InterBase能认识的SQL代码。谢谢了。
 
select A.n1,A.n2,A.n3,B.C1,B.C2,B.C3,C.D1,C.D2,C.D3,C.D4
from (select IDENTITY(int,1,1) As Id1,* from B1) A
INNER JOIN (SELECT IDENTITY(int,1,1) As Id1,* FROM B2) B ON A.ID1=B.ID1
INNER JOIN (SELECT IDENTITY(int,1,1) As Id1,* FROM B3) C ON B.id1=c.id1

 
To sdhxdjw:
我绝望了,还是通不过Interbase 的语法检查错误如下:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, char 5
select
Statement: select A.n1,A.n2,A.n3,B.C1,B.C2,B.C3,C.D1,C.D2,C.D3,C.D4
from (select IDENTITY(int,1,1) As Id1,* from B1) A
INNER JOIN (SELECT IDENTITY(int,1,1) As Id1,* FROM B2) B ON A.ID1=B.ID1
INNER JOIN (SELECT IDENTITY(int,1,1) As Id1,* FROM B3) C ON B.id1=c.id1
/////
好像Interbase 只认识 DSQL and isql(见于 Interbase SQL Help)
各位老大,求您了,指条明路吧。
 
三个表没有联系,你把它列在一起显示有什么用?想不通。
如果只是为了能方便查看,就弄1个stringgrid用程序填充,或者干脆搞3个dbgrid。
 
是这样的:
第一个表(B1)内有试题,图像等,第二个表(B2)内有候选答案,
第三个表(B3)内有相关的得分。即:
试题+图像等--->1..N各候选答案---〉与1..N对应的得分。<----这是一道题
所以在DBGrid1中要一一对应,才有以上的要求。
还有什么方法?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
539
import
I
后退
顶部