查询问题
表大概是这样
TABLE_MESSAGE ( MID, userID, roleID, content...)
TABLE_USER (userID, userName...)
TABLE_ROLE (roleID, roleName....)
TABLE_USERROLE(userID,roleID)
之间的关系是一个用户只有一个userID,但是可以对应多个roleID, MESSAGE表中的userID是发送人的id,而roleID是接收角色的id,也就是说发消息的时候是按角色发给>=1个用户.
现在要为登陆用户建一个消息列表,要列出发给自己所在角色的消息和自己发出的消息,手头可以用的只有自己的userID.
之间的关系我比较清楚了,就是sql不知道怎么写好,开始这么弄:
假如我的userID是1
SELECT * FROM TABLE_MESSAGE tm WHERE tm.userID=1 AND tm.roleID=
(SELECT ur.roleID FROM TABLE_USERROLE ur WHERE tm.userID=ur.userID)
可是不对... 对oracle sql不是太熟,我估计是子查询返回的是一个集合的缘故,
后来想到这样就算查出来了,如果还要显示roleName,难道还要再次查询TABLE_ROLE???
难怪我的页面出来这么慢...
哪位可以指点指点,多谢~~