一个表的查询怎么建立关系查询?

DDRsun3 2012-11-13 10:23:52


SELECT BigClassID,Name
FROM Sp_ClassBig
where Sp_ClassBig.UpGradeID=0

SELECT BigClassID,Name
FROM Sp_ClassBig
where Sp_ClassBig.UpGradeID>0

这两个查询怎么建立关系查询?怎么让两个查询有主从关系?
...全文
254 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimifdw 2012-11-15
  • 打赏
  • 举报
回复
select a.name,b.name from (select bigclassid,name from test where upgradeid=0) a inner join (select * from test where upgradeid>0) b on a.bigclassid =b.upgradeid order by b.upgradeid
把test换成你要的表名即可
kensouterry1 2012-11-15
  • 打赏
  • 举报
回复
@t只是我为了查询造出来的准备数据而已
kensouterry1 2012-11-15
  • 打赏
  • 举报
回复
引用 4 楼 ddrsun 的回复:
引用 2 楼 kensouterry1 的回复:SQL code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657DECLARE @t TABLE(BigClassID int,Name varchar(10),……
我这里写的@t是模拟你第一张帖子出贴出来的数据表中的数据,你可以直接用数据库中的真实表名替换到@t的位置,


;WITH c_distinct AS
(    SELECT *    FROM @t    WHERE UpGradeID = 0)
SELECT ParentName = a.Name,         ChildName = t2.Name
FROM(    SELECT *    FROM c_distinct) a
CROSS APPLY(    SELECT t.Name    FROM @t t    WHERE t.UpGradeID = a.BigClassID) t2
把这段中@t变量换成你的表名应该就是了
DDRsun3 2012-11-13
  • 打赏
  • 举报
回复
引用 2 楼 kensouterry1 的回复:
SQL code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657DECLARE @t TABLE(BigClassID int,Name varchar(10),UpGradeID int); INSERT I……
对了,如果用户要增加类,那INSERT INTO @t 这个不是要改了吗? INSERT INTO @t select * 这样行吗?
DDRsun3 2012-11-13
  • 打赏
  • 举报
回复
引用 2 楼 kensouterry1 的回复:
SQL code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657DECLARE @t TABLE(BigClassID int,Name varchar(10),UpGradeID int); INSERT I……
哦,建个中间表~~厉害~ 有简便一点的吗?像INNER JOIN那样就带有关系
kensouterry1 2012-11-13
  • 打赏
  • 举报
回复


DECLARE @t TABLE
(
BigClassID int,
Name varchar(10),
UpGradeID int
);

INSERT INTO @t  
SELECT 1,'食品干货', 0 UNION ALL
SELECT 2,'日用', 0 UNION ALL
SELECT 3,'休闲食品', 1 UNION ALL
SELECT 4,'饮料', 1 UNION ALL
SELECT 5,'烟', 1 UNION ALL
SELECT 6,'酒水', 1 UNION ALL
SELECT 7,'健康美容', 2 UNION ALL
SELECT 8,'纸制用品', 2 UNION ALL
SELECT 9,'饼干', 1 UNION ALL
SELECT 10,'清洁用品', 2 
--准备数据

;WITH c_distinct AS
(
	SELECT *
	FROM @t
	WHERE UpGradeID = 0
)
SELECT ParentName = a.Name, 
		ChildName = t2.Name
FROM
(
	SELECT *
	FROM c_distinct) a
CROSS APPLY
(
	SELECT t.Name
	FROM @t t
	WHERE t.UpGradeID = a.BigClassID) t2


测试结果:
ParentName ChildName
---------- ----------
食品干货     休闲食品
食品干货     饮料
食品干货     烟
食品干货     酒水
食品干货     饼干
日用         健康美容
日用         纸制用品
日用         清洁用品

(8 row(s) affected)



你是否想要递归查询,类似这样?
DDRsun3 2012-11-13
  • 打赏
  • 举报
回复
麻烦各位帮忙看看了~~谢啦

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧