数据库中某一列的值用逗号分隔,在显示时如何引用其他表的数据?

举个例子详细说明一下..表AId[唯一]Value[不唯一]122435142520表BId[唯一]Value[不唯一]1122,334,541,2,3就是说表B中的Va... 举个例子详细说明一下..

表A
Id[唯一] Value[不唯一]
1 2
2 4
3 51
4 2
5 20

表B
Id[唯一] Value[不唯一]
1 1
2 2,3
3 4,5
4 1,2,3

就是说表B中的Value列中的值是表A中的ID和逗号串接而成的字符串,
我希望能够在程序中显示表格的时候将表A的Value根据B的Value中填写的Id代入表B的Value值.
请问能否实现?如何实现? 能提供一些思路和关键的代码么?
还有如何溯源?就是B的Value被替代后就是A中的Value串了,因为A里面的值会有重复的,如何找到它的Id?
麻烦各位了.
程序使用Visual Basic制作[VB比较方便...],其他语言也可以吧,我参考一下.
表格控件使用 Microsoft Flexgrid Control 或者 Microsoft Hierarchial Flexgrid Control.
我也没用过这两个,随便吧..能用就好了.....
展开
 我来答
匿名用户
推荐于2017-09-12
展开全部

数据库是什么数据库?

SQL Server  2005 以上版本的话,  倒是没有问题的...

直接一条语句就可以处理了。


-- 测试表 和测试数据。

CREATE TABLE #A (
  Id     INT,
  Value  varchar(6)
);
GO

INSERT INTO #A VALUES(1,  '2');
INSERT INTO #A VALUES(2,  '4');
INSERT INTO #A VALUES(3,  '51');
INSERT INTO #A VALUES(4,  '2');
INSERT INTO #A VALUES(5,  '20');
GO


CREATE TABLE #B (
  Id      INT,
  Value   VARCHAR(10)
);
GO

INSERT INTO #B VALUES(1,  '1');
INSERT INTO #B VALUES(2,  '2,3');
INSERT INTO #B VALUES(3,  '4,5');
INSERT INTO #B VALUES(4,  '1,2,3');
GO



-- 一条 查询的 sql 语句。
SELECT
  id,
  cast(
  STUFF(
    (
    SELECT
      ',' + a.value
    FROM
      #a a
    WHERE
      CHARINDEX( ',' + RTRIM(cast(a.id as char)) + ',',  ',' + b.Value + ',' ) > 0
    FOR XML PATH('')
    ), 1, 1, '') 
  as varchar(10)) AS Value
FROM
  #b  b;
GO


-- 查询的结果如下:

id          Value
----------- ----------
          1 2
          2 4,51
          3 2,20
          4 2,4,51

(4 行受影响)
更多追问追答
追问
我用的是Access数据库.
追答
那你就等会 VB 的人来帮忙了......
我 VB 基本不会, 只会几种数据库, 帮不上忙啦!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式