为什么同一张表会取出不同的结果?

lazyfox 2012-10-23 02:24:07
这个问题在网上确实不知道怎么搜索,所以来坛子问下,麻烦大家了
SQL语句是这样的(无用的我已经删除了)。
select c.name as username,c.id,w.id as userid,
w.name as usernameto
from t_o_item a,t_b_accttype b,t_acl_user c,
t_o_objectuser v,t_acl_user w
where a.itemuserid = c.id and v.userid = w.id and
a.itemid = v.objectid and a.itemid is not null and a.itemstate = b.listvalue and
v.objecttype = '2' and b.maintype = 'itemstate'

我不能理解的地方就是,t_acl_user c和t_acl_user w两张表,一个SQL语句,同一张表出现了两次。这种写法常见吗?我怎么觉得这数据库设计的好像有问题,从一个表里取出多个对象。

...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazyfox 2012-10-24
  • 打赏
  • 举报
回复
呵呵,谢谢大家的回复。又仔细看了下,懂了。祝大家生活愉快。
book523 2012-10-23
  • 打赏
  • 举报
回复
这种设计很正常啊,举个最简单的例子:一个公共代码表,里面存了一个系统中需要用到的所有公共代码,

有个表用到了3类公共代码,转换时sql中公共代码表就要出现3次,很正常,很常见的用法。
raymonshi 2012-10-23
  • 打赏
  • 举报
回复
根据楼主提供的sql,他们的取数规则是不同的。

a.itemuserid = c.id --a表与c表的关联方式
a.itemid = v.objectid and v.userid = w.id --a表通过v表与再与w表关联。关联的字段是不同的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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