SQl语句怎么写? ( 积分: 20 )

  • 主题发起人 主题发起人 hzjzxp
  • 开始时间 开始时间
H

hzjzxp

Unregistered / Unconfirmed
GUEST, unregistred user!
a表
id , name
1 hn
2 sh
3 zj

b表
id , name , aid
1 0371 1
2 0372 1
3 0376 1
4 020 2

c表
id , name , bid ,value ,state
1 xiao 1 33
2 zhang 1 5
3 wang 2 12
4 hao 2 34
5 liu 4 22
6 zhao 4 23
我想得到下面查询结果,请问怎么写sql语句,想了好长时间没有一个高效的方法!
a是主表, b是从表,c是记录每次读数的表,正常情况下c表中的value值范围在10以内,大于10的记录认为故障(级联分析故障)

处理结果如:
id , name , bid ,value ,state
1 xiao 1 33 xiao故障
2 zhang 1 5 zhang正常
3 wang 2 12 0372故障
4 hao 2 34 0372故障
5 liu 4 22 sh故障
6 zhao 4 23 sh故障
 
不会吧.
处理结果中,第一,二条的STATE查的是C表中的NAME,三,四条又查的是B表的NAME
五,六条查的怎么又变成是A表的NAME了?
 
是的,就是级联分析,如果b表的id在c表对应的记录都有故障的话,state更新为bid对应的name故障,如果a表的id在c表对应的记录都有故障的话, state更新为对应的name故障否则为c表中name!!
 
是不是把A表和B表的其中设为一个主键 另一个就是外键 应可以在C表中查的出来吧
你试试 我也没做过 我听人是这样说的 如果行的话就给我说一下好吗[:)][:D]
 
晕了,帮你UP~~~~~
 
实现是肯定可以实现,
如把c表中按state进行分组,如果是一种状态且为故障的话,再检查对应b表中的id的状态,再检查对应a表中的id的状态.
 
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
 
用if应该可以吧?
 
我现在想要的是解决此问题的有效方法!
 
其实就是个目录树的结构嘛
 
其它部份不说了,只说关键技术
select IIF(value>10,name+'故障',name+'正常') from 表3
 
To LZ:
"是的,就是级联分析,如果b表的id在c表对应的记录都有故障的话,state更新为bid对应的name故障,如果a表的id在c表对应的记录都有故障的话, state更新为对应的name故障否则为c表中name!!
"
你这句话 不是很理解 所以只能给出我的思路
先把 a,b,c三个表做一个联合
得到如下结构的结果
id , name , bid ,value ,state, NameA, NameB, NameC
1 xiao 1 33
2 zhang 1 5
3 wang 2 12
4 hao 2 34
5 liu 4 22
6 zhao 4 23
NameA, NameB, NameC中分别存放a,b,c 三表的相应内容
然后根据你的规则把 应该的那个放入State
 
我也不太清楚你的意思,如果C表都包含有A表与B表的内容的话,你就查询C表就可以了啊
SELECT name , bid ,value ,state=name+'正常' FROM C WHERE VALUE<10
UNION
SELECT name , bid ,value ,state=name+'故障' FROM C WHERE VALUE>10
就可以了.
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
497
import
I
I
回复
0
查看
425
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
624
import
I
后退
顶部