首页 新闻 会员 周边 捐助

关于一个查询过程

0
悬赏园豆:100 [已解决问题] 解决于 2009-04-22 09:06

user

id  uname  tradeid
1    a    1,5,25
2    b    2,5
3    c    6 

4    d    6,5,80

 

trade

id   title

1    类别1

2    类别2

3     类别3

每个用户可属于任意个分类

怎样通过tradeid把用户关联起来?

例如查询与a有关联的就是b和d  因为他们有同样的tradeid

问题补充: 每个用户都可以属于多个类别 我想得到每个用户有相同类别的用户 这个设计我自己都觉得不行,可是到了最后关头了,这个需求是临时加上的 实在不想再建个表了
等钩的鱼的主页 等钩的鱼 | 初学一级 | 园豆:10
提问于:2009-04-19 17:32
< >
分享
最佳答案
0

user表里直接保存tradeid不是太好。如果不能更新设计数据库的话,可以这样做。

1. 把user表和trade做连接,对每个tradeid生成一行记录,生成表user_trade。
2. 把user_trade和自已做连接,就可以得到相关的用户了。

Azuresong | 老鸟四级 |园豆:3565 | 2009-04-19 18:57
其他回答(4)
0

我到觉得,你的数据库设计改一下,更合适,tradeid与user 的关联,另外搞一张关联表。这样比较好

李.net | 园豆:730 (小虾三级) | 2009-04-19 18:09
0

呵呵 这个数据库我觉得应该改进下 根据关系模型的设计,这个关联起来的话 连第一范式都不是,而第三范式才比较合理!

就是楼上两位说的了。

Bin仔 | 园豆:185 (初学一级) | 2009-04-19 19:29
0

lz只需要再加一张关联表就行了

一般也会保留你现在设计的结构,当作一个冗余的字段,便于查询

wingoo | 园豆:1513 (小虾三级) | 2009-04-19 22:15
0

用数组应该可以实现的,用数组把第一个表的1,5,25分开,

  string[] Arr = tradeid .Split(',');
        for (int ii = 0; ii < Arr.Length; ii++)
         {Arr[ii]=aaaa[Arr[ii]].toString()}

第二个表可以用哈希表定义下,再连接给上面的就行了

private static System.Collections.Hashtable aaaa= new System.Collections.Hashtable();

aaaa.Add(id,title);

你可以试试!

子夜星辰 | 园豆:1613 (小虾三级) | 2009-04-20 09:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册