日期:2014-05-17  浏览次数:20883 次

为什么同一张表会取出不同的结果?
这个问题在网上确实不知道怎么搜索,所以来坛子问下,麻烦大家了
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语句,同一张表出现了两次。这种写法常见吗?我怎么觉得这数据库设计的好像有问题,从一个表里取出多个对象。


------解决方案--------------------
根据楼主提供的sql,他们的取数规则是不同的。

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

------解决方案--------------------
这种设计很正常啊,举个最简单的例子:一个公共代码表,里面存了一个系统中需要用到的所有公共代码,

有个表用到了3类公共代码,转换时sql中公共代码表就要出现3次,很正常,很常见的用法。