这样就翘辫子了吗?(4分)

  • 主题发起人 主题发起人 ifcansee
  • 开始时间 开始时间
I

ifcansee

Unregistered / Unconfirmed
GUEST, unregistred user!
select t1.seiz+t2.seiz+t3.seiz-t4.seiz-t5.seiz,t1.answ+t2.answ+t3.answ-t4.anse-
t5.answ,t1.serl+t2.serl+t3.serl-t4.serl-t5.serl,t1.rerl+t2.rerl+t3.rerl-t4.rerl-
t5.rerl from t1,t2,t3,t4,t5
t1,t2,t3,t4,t5都为本地表,记录也就万条左右,p4的机器,128m内存,只见硬盘狂闪,
搞了好长时间,最后是出错信息,该语句应该没错吧?!
 
还有什么办法实现上边的需求
 
由于没有任何条件,如果t1,t2,t3,t4,t5的记录都在万条左右的话,那么查询出来的结果应该在
10000*10000*10000*10000*10000左右,你自己看看有多少条记录,你的机器配置还差得远呢,
怎么会不出错呢,没死机算你运气好了.
 
那该怎么做才能实现上边的结果呢
 
你应该设置好查询条件,否则这样的查询是没有任何意义的.
 
恐怖的笛卡儿集。
 
是这样,t1,t2,t3,t4,t5是结构相同的5张表
seiz answ serl rerl
.. .. .. ..
.. .. .. ..
.. .. .. ..

我想得到的结果是这样的
seiz answ serl rerl
t1+t2+t3-t4-t5得到的结果

该怎么做
 
如果各个表里的记录都是一一对应的,这样:
select ~~~ from t1,t2,t3,t4,t5 where (t1.seiz=t2.seiz) and (t2.seiz=t3.seiz)
and (t3.seiz=t4.seiz) and (t4.seiz=t5.seiz)
关键你应该给每个表设置一个关键字段,并理清楚每个表的关系,否则很难办.
 
记录的数值不同啊,如果是相同的,我还加加减减他干吗?
 
那各个表中记录的关系呢?比如:t1表中第一条记录和t2,t3,t4,t5表中那些记录进行计算.你
不可能让t1表中每条记录和t2,t3,t4,t5表中没条记录都进行计算吧,那结果不知道有多大.
 
每个表的seiz,answ,serl,rerl字段的数值分别按照t1+t2+t3-t4-t5的关系计算
 
你这几个表该有主键吧。你是想每个记录“分别按照t1+t2+t3-t4-t5的关系计算”的话,它们该有相应的关系,比如主键相同
 
比如:
t1的数据:
1,1,1,1
2,2,2,2
t2的数据:
3,3,3,3
4,4,4,4
t2的数据:
5,5,5,5
6,6,6,6
t2的数据:
7,7,7,7
8,8,8,8
t2的数据:
9,9,9,9
10,10,10,10
难道你想出现这样的结果吗:
1+3+5-7-9,1+3+5-7-9,1+3+5-7-9,1+3+5-7-9
1+4+5-7-9,1+4+5-7-9,1+4+5-7-9,1+4+5-7-9
1+3+6-7-9,1+3+6-7-9,1+3+6-7-9,1+3+6-7-9
1+4+6-7-9,1+4+6-7-9,1+4+6-7-9,1+4+6-7-9
1+3+5-8-9,1+3+5-8-9,1+3+5-8-9,1+3+5-8-9
.
.
.
2+4+6-8-10,2+4+6-8-10,2+4+6-8-10,2+4+6-8-10
(共32行)
喔,my god,太吓人了,还好只有两条记录.
你可以考虑修改一下表结构.
 
这样啊,知道了,再添加一个字段作为主键,明天试试看,谢谢
 
后退
顶部