问题表述的不是太清楚,详情请进。

tangwei9760955 2012-06-18 10:46:14
问题是这样,需要用到Tag标签。
想了两个办法。


1.直接存取。
在表里多加一列,字符串类型。
例如“拉面,红烧面,方便面”
用,号分割

2.关联Tag表
存取关联Tag表的ID


方案1倒是蛮好解决,搜索Tag时直接用Like去匹配数据。
方案2的话,某条记录有多个Tag标签该怎么匹配Tag关联表的文字描述信息呢?


如下:
A表(记录表)
ID Tag
-----------
1 1,2,3
2 1,3
3 2,3

B表(Tag关联表)
ID 描述
-------------
1 拉面
2 方便面
3 牛肉面

想要的结果

ID Tag TagName
-------------------
1 1,2,3 拉面,方便面,牛肉面
2 1,3 拉面,牛肉面
3 2,3 方便面,牛肉面


谢谢帮忙的兄弟姐妹。
...全文
71 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

--> 测试数据:[A表]
if object_id('[A表]') is not null
drop table [A表]
create table [A表](
[ID] int,
[Tag] varchar(5)
)
go
insert [A表]
select 1,'1,2,3' union all
select 2,'1,3' union all
select 3,'2,3'
go
--> 测试数据:[B表]
if object_id('[B表]') is not null
drop table [B表]
create table [B表](
[ID] int,
[描述] varchar(6)
)
go
insert [B表]
select 1,'拉面' union all
select 2,'方便面' union all
select 3,'牛肉面'
go
;with t
as(
select a.*,b.描述
from [A表] a,[B表] b
where CHARINDEX(LTRIM(b.[ID]),a.Tag)>0
)
SELECT *FROM (SELECT DISTINCT Id,Tag FROM t)A
OUTER APPLY(
SELECT [描述]= STUFF(REPLACE(REPLACE(
( SELECT [描述] FROM t N
WHERE id = A.id and Tag=a.Tag
FOR XML AUTO
), '<b 描述="', ','), '"/>', ''), 1, 1, '')
)N
/*
Id Tag 描述
---------------------------------
1 1,2,3 拉面,方便面,牛肉面
2 1,3 拉面,牛肉面
3 2,3 方便面,牛肉面
*/


迪迦凹凸曼 2012-06-18
  • 打赏
  • 举报
回复

--A表(记录表)
DECLARE @A TABLE(id INT,Tag VARCHAR(10))
--ID Tag
-----------
INSERT INTO @A
SELECT 1, '1,2,3' UNION ALL
SELECT 2, '1,3' UNION ALL
SELECT 3, '2,3'

DECLARE @B TABLE(id INT,描述 VARCHAR(10))
-------------
INSERT INTO @B
SELECT 1, '拉面' UNION ALL
SELECT 2, '方便面' UNION ALL
SELECT 3, '牛肉面'

SELECT a.id,
a.Tag,
TagName=STUFF((SELECT ','+描述 FROM @B WHERE CHARINDEX(','+CAST(id AS VARCHAR(4))+',',','+a.Tag+',' )>0 FOR XML PATH('')),1,1,'')
FROM @A a
GROUP BY a.id,Tag
/*
id Tag TagName
----------- ---------- -------------------------
1 1,2,3 拉面,方便面,牛肉面
2 1,3 拉面,牛肉面
3 2,3 方便面,牛肉面

(3 行受影响)
*/

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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