特殊表结构的求助

calen 2005-09-09 09:47:47
CREATE TABLE [dbo].[T_OrganizeType] (
[OrganizeTypeID] [int] NOT NULL ,
[OrganizeType] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL
)

包括
OrganizeTypeID, OrganizeType
1, 市海关
2, 区海关
3, 船代
4, 货代


在其它表中使用OrganizeTypeID字段,如果代表多个的话,采用加法。
例如:
市海关=1
区海关=2
市海关+区海关=3
船代=4
市海关+船代=5
区海关+船代=6
市海关+区海关+船代=7
货代=8
市海关+货代=9
区海关+货代=10
市海关+区海关+货代=11
船代+货代=12
市海关+船代+货代=13
区海关+船代+货代=14
市海关+区海关+船代+货代=15


请问,在数据库查询中,我如何才能够直接使用查询语句就能查出
例如有一个表
CREATE TABLE [dbo].[T_Module] (
[ModuleID] [int] NOT NULL ,
[OrganizeTypeID] [int] NULL ,
[ModuleName] [varchar] (32) COLLATE Chinese_PRC_CI_AS NULL ,
[ModuleSign] [varchar] (64) COLLATE Chinese_PRC_CI_AS NULL ,
[Spell] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[Description] [varchar] (256) COLLATE Chinese_PRC_CI_AS NULL
)

ModuleID, OrganizeTypeID, ModuleName, ModuleSign, Spell, Description
1, 15, 关于, About20050101, gy, 软件基本信息说明

当使用如下语句查询时,
SELECT T_Module.ModuleID, T_Module.OrganizeTypeID, T_Module.ModuleName,
T_Module.ModuleSign, T_Module.Spell, T_Module.Description,
T_OrganizeType.OrganizeType
FROM T_Module INNER JOIN
T_OrganizeType ON T_Module.OrganizeTypeID = T_OrganizeType.OrganizeTypeID

我希望能够看到我想要的结果
ModuleID, OrganizeTypeID, ModuleName, ModuleSign, Spell, Description,OrganizeType 1,15,关于,About20050101,gy,软件基本信息说明,市海关+区海关+船代+货代

其中,加号可以使用其它的替代

...全文
151 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
calen 2005-09-14
  • 打赏
  • 举报
回复
我目前替代的方法是写一个视图硬拼出来


如果是在前台的DataSet中,倒是可以使用存储过程查询出来,然后再处理

大家有没有什么高招?
calen 2005-09-14
  • 打赏
  • 举报
回复
up
winternet 2005-09-12
  • 打赏
  • 举报
回复
期待解決方案!!!!!
winternet 2005-09-12
  • 打赏
  • 举报
回复
這個是非常好的設計的!
CrazyFor 2005-09-12
  • 打赏
  • 举报
回复
而且solo_he() 的方法不符合第三范式,
CrazyFor 2005-09-12
  • 打赏
  • 举报
回复
瞎说,这种方法处理多选情况是最好的,位运算的速度是非常快。
snowwolf613 2005-09-12
  • 打赏
  • 举报
回复
支持 solo_he() 的意見﹐這樣設計的資料表及不規范﹐而且他的可拓展性也很差。
重新設立編碼規則吧。都用字符類型﹐然后按級別設定﹐這樣可能會比較清楚一點。
CrazyFor 2005-09-12
  • 打赏
  • 举报
回复
用位运算符“与”和“或”可实现,自己看一下帮助吧。
solo_he 2005-09-12
  • 打赏
  • 举报
回复
天啦,我不知道是个什么目的,很奇怪怎么会有这样设计数据库基表的?不过如果你非要这么弄的话,我也只好将就着非常不情愿给你支个招(因为这样是非常不规范的)。
试用组合字段吧,比如ABCD,四位,每位代表一种OrganizeTypeID,比如:
市海关=1000
区海关=2000
市海关+区海关=1200
船代=4000
市海关+船代=1400
区海关+船代=2400....等等不一而足。

明白了吗,但我还是不建议你这样做,宁愿你用规范化的数据库设计方法。

calen 2005-09-11
  • 打赏
  • 举报
回复
up
calen 2005-09-09
  • 打赏
  • 举报
回复
不能罗列,因为平常只看到4条记录

我写错了,应该是如下的数据

OrganizeTypeID, OrganizeType
1, 市海关
2, 区海关
4, 船代
8, 货代


sorry




子陌红尘 2005-09-09
  • 打赏
  • 举报
回复
别用什么加法,1 + 4 = 2 + 3,同一个数值可能存在多种组合。
直接建一个对照表,把从1~15的对照的OrganizeType罗列出来,简单。

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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