请问这个能用一个sql语句写出来么?(50分)

  • 主题发起人 主题发起人 bgqy2000
  • 开始时间 开始时间
B

bgqy2000

Unregistered / Unconfirmed
GUEST, unregistred user!
SHEETID TAB_CID VNAME TRSHEETID TRANSFCID VTRANSFNAME TAB_TRANSTIME
001200608030100002 00100005 洗浴牌5 001200608030100003 00100008 洗浴牌8 2006-08-03 10:53:07.000
001200608030100008 00100010 洗浴牌10 001200608030100001 00100012 洗浴牌12 2006-08-03 11:08:21.000
001200608030100008 00100010 洗浴牌10 001200608030100002 00100005 洗浴牌5 2006-08-03 10:55:57.000

现在我想通过一条sql语句得到这三条记录,请问该怎么写呢。
 
你得说出查询条件啊!
 
就是通过TAB_CID先查出等于00100010 的记录,在查出的记录里看有没有 TRANSFCID的值与表中记录TAB_CID的值相等的,有的话也查出来。不知道说清楚了没。简单的说将表中与00100010有关的记录全部找出来
 
select * from table1 where TAB_CID='00100010' OR TRANSFCID='00100010'
 
select * from tb where TAB_CID = '00100010'
UNION
select * from tb where TRANSFCID = '00100010'
 
楼上的都不对啊,继续,解决了就放分,谢谢
 
可能没说清楚,意思是:
从下面的记录中
001200608030100002 00100005 洗浴牌5 001200608030100003 00100008 洗浴牌8 2006-08-03 10:53:07.000
001200608030100008 00100010 洗浴牌10 001200608030100001 00100012 洗浴牌12 2006-08-03 11:08:21.000
001200608030100008 00100010 洗浴牌10 001200608030100002 00100005 洗浴牌5 2006-08-03 10:55:57.000
001200608030100009 00100016 洗浴牌16 001200608030100010 00100022 洗浴牌22 2006-08-03 11:43:11.000
查出
001200608030100002 00100005 洗浴牌5 001200608030100003 00100008 洗浴牌8 2006-08-03 10:53:07.000
001200608030100008 00100010 洗浴牌10 001200608030100001 00100012 洗浴牌12 2006-08-03 11:08:21.000
001200608030100008 00100010 洗浴牌10 001200608030100002 00100005 洗浴牌5 2006-08-03 10:55:57.000
 
select * from WS_T_tabletemp where TAB_CID = '00100010'
UNION
select * from WS_T_tabletemp where TAB_CID IN
(select TAB_TRANSFCID from WS_T_tabletemp WHERE TAB_CID = '00100010')
这个好象可以,还得检测一下,呵呵
 
有限制,只能得到与之关联的两层,多与两层的记录就查不出来,不知道有没有好的方法啊。大家帮忙看看,谢谢
 
--估计是你对问题描述不清楚,看了看好象是你要的是下面的:
select * from WS_T_tabletemp where TAB_CID = '00100010'
UNION
select * from WS_T_tabletemp where TAB_CID IN
(select DISTINCT TAB_TRANSFCID from WS_T_tabletemp WHERE TAB_CID <> '00100010' )
 
select * from from table1 where TRANSFCID in (select TRANSFCID from table1 where TAB_CID='00100010')
union select * from table1 where TAB_CID='00100010'

我觉得是这样的
 
网断了,来迟了!
 
你可以根据最后的时间来做判断啊,想方设法找个条件出来就可以了
 
是啊,,找出你想要查找的条件,那就好办了,,
你这样提问,我看没人敢说他说的是对的。
因为你对查询的条件都没说清楚。不法回答。
 
9494

按这个提法:
就是通过TAB_CID先查出等于00100010 的记录,在查出的记录里看有没有 TRANSFCID的值与表中记录TAB_CID的值相等的,有的话也查出来。
是不是也可以理解为:
SELECT * FROM TABLE
WHERE TAB_CID = '001000010'
AND TAB_CID = TRANSFCID
 
我理解是不是这样!
就是查出来'001000010'之后再比较 TAB_CID = TRANSFCID 符合的找出来!
然后继续比对刚刚找出来的记录的TRANSFCID 是否也和表中的TAB_CID 有相等的
如果有继续找出来
如此循环!知道没有!
这样我觉得你的表的构造有问题!是在设计上!
 
楼上的两位理解正确,我现在实现的只能转两层。如:从A->B->C 然后我对C进行处理,得到A,B,C 三条记录。但是如果多于两层,如:A->B->C->D 那么对D进行处理,则能得到B C D三条记录,而A却查不出。有好的 方法么?
 
是不是也可以理解为:
SELECT * FROM TABLE
WHERE TAB_CID = '001000010'
AND TAB_CID = TRANSFCID

这个肯定是不对的
 
多人接受答案了。
 
后退
顶部