为了账号安全,请及时绑定邮箱和手机立即绑定

小弟真诚求一条SQL语句,请各位大侠帮帮忙

小弟真诚求一条SQL语句,请各位大侠帮帮忙

30秒到达战场 2018-12-07 01:41:08
小弟分不多,真诚请教大侠们一个SQL问题,希望大侠们不吝赐教,小弟在此不甚感激。有一张表记录物料 如下:(10C是父物料,30C是10C的子物料【30C本身也是父物料】70C是30C的子物料【70C本身也是父物料】)ITEMPARENT_CD ITEMCHILD_CD BOM_SQ ……ITEMPARENT_CD是主键  10CA0001 30CA0001 1  10CA0001 065A0001 2  10CA0001 085A0001 3  30CA0001 70CA0001 4  30CA0001 021A0001 5  70CA0001 011A0001 6现在要一条sql语句根据10C查询出所有他的子物料(同时加上一个等级Level字段)效果如下:查询条件是10CA0001Level ITEMCHILD_CD  1 30CA0001  2 70CA0001  3 011A0001  2 021A0001  1 065A0001  1 085A0001真诚请教大侠们该怎么实现?
查看完整描述

12 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

不理解你的意思,  你是已经有表结构,只需一条sql语句.   还是说需要帮助你怎么设计.  

如果你已经有表结构, 请把你建表的语句,以及测试数据编写好,这样有助于大家的理解,以便更好的帮助你.

但如果你是需要别人怎么帮你设计. 请把你的需求说明细点吧, 我还是没理解你的意思.

查看完整回答
反对 回复 2019-01-07
?
PIPIONE

TA贡献1829条经验 获得超9个赞

不是要设计,就是想能用一条sql语句实现父子级的查询
查看完整回答
反对 回复 2019-01-07
?
DIEA

TA贡献1820条经验 获得超2个赞

建一个表T_Wuliao,表结构和数据如下:

Level  ITEMCHILD_CD
  1     30CA0001
  2     70CA0001
  3     011A0001
  2     021A0001
  1     065A0001
  1     085A0001

然后select * from T_Wuliao,结果100%就是你想要的。

赶紧给分。。。

查看完整回答
反对 回复 2019-01-07
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我已经解决了,谢谢您的帮助

查看完整回答
反对 回复 2019-01-07
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

帮你顶顶,期待sql语句达人登场。

查看完整回答
反对 回复 2019-01-07
?
青春有我

TA贡献1784条经验 获得超8个赞

我这个已经实现了你要的功能好吗.别告诉我看不懂,

查看完整回答
反对 回复 2019-01-07
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

USE TEMPDB
GO

CREATE TABLE #TEMP
(
ID
INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
PARENTID
INT
)

INSERT INTO #TEMP
VALUES(0),(1),(2),(3),(3),(2),(3),(2),(3),(2)




;
WITH T AS
(
SELECT 1 AS [Level],* FROM #TEMP WHERE ID=3
UNION ALL
SELECT CASE WHEN T.ID=T.PARENTID THEN T.Level ELSE T.Level+1 END AS [Level],A.* FROM #TEMP AS A INNER JOIN T ON A.PARENTID=T.ID
)
SELECT * FROM T
是这个意思吗?
查看完整回答
反对 回复 2019-01-07
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我的意思是就像树形结构一样

查看完整回答
反对 回复 2019-01-07
?
HUWWW

TA贡献1874条经验 获得超12个赞

我写的难道不是树?你的那些命名太乱我没有看懂。要是树结构那么上面的代码改改就能用。

查看完整回答
反对 回复 2019-01-07
  • 12 回答
  • 0 关注
  • 533 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信