SELECT * FROM TABLE_MESSAGE tm WHERE tm.userID=1 or tm.roleID in
(SELECT ur.roleID FROM TABLE_USERROLE ur WHERE tm.userID=ur.userID)
要列出发给自己所在角色的消息和自己发出的消息
自己发的就是TABLE_MESSAGE中userID=1  
发给自己所在角色的消息 就是TABLE_MESSAGE中roleID=1  
这样,
SELECT * FROM TABLE_MESSAGE tm WHERE tm.userID=1 or tm.roleID = 1
不久全部找出来了??

解决方案 »

  1.   

    SELECT tm.*,tr.roleName FROM TABLE_MESSAGE tm, TABLE_USERROLE ur ,TABLE_ROLE tr
    WHERE tm.userID = ur.tm.userID AND tm.roleID = ur.roleID and ur.roleID = tr.roleID and tm.userID=1
      

  2.   

    嗯,老问题是解决了,但是现在头说不能按roleID,改成按roleName即,如果消息的userID对应的roleID中,roleName符合某种条件的(假如roleName必须是xxx_超级用户),才能把该消息列出来 -_-!!这时该怎么办?? 我要先找到自己角色的名字中含有xxx_超级用户字符,再找到相应roleID,再根据上面的方法找出列表天哪, 大哥大姐们, 这能在一个sql语句中做吗!!! 
    数据库是oracle