select a.id
from table1 a,table2 b,table3 c
where a.a1='if1'
and b.a2='if2'
and c.c1='if3'
and a.id=b.id
and a.id=c.id
from table1 a,table2 b,table3 c
where a.a1='if1'
and b.a2='if2'
and c.c1='if3'
and a.id=b.id
and a.id=c.id
where a.id=b.id and a.id=c.id and a.a1="if1"
and b.a2="if2"
and c.c1="if3"
union
select id from table2 where a2="if2"
union
select id from table3 where c1="if3"
union all
select id from table2 where a2="if2"
union all
select id from table3 where c1="if3" ) as a
group by id
having sum(1) = 3
你给我的是求并集,不过我还是通过你教我的方法查到如何求交集。谢谢。
我一开始没说清楚我的意思,我的意思是记录集1并记录集2后交记录集3.
并且我希望最后的显示结果是:
id,a1,a2,b1,b2,c1,c2这样的记录集,但像你们刚才教我的方法只有id
where a.id=b.id and a.id=c.id and a.a1="if1"
and b.a2="if2"
and c.c1="if3"
thanks,你的方法是可行的,不过我在实际应用中却用不了。
因为三个select 语句都不像我刚才写的那么简单。每一个select都是一个复合查询,我希望有种方法能够把三个Select出来的记录集进行交并操作。最后得到的交并结果再与另一个表相关取出对应数据。
也就是说:id,a1,a2,b1,b2,c1,c2
1 1 1 1 1 1 1id,a1,a2,b1,b2,c1,c2
1 1 1 1 1 1 2id,a1,a2,b1,b2,c1,c2
2 1 1 1 1 1 1这三个集有交集吗?是什么?
所以只能具体问题具体分析,大家只能根据你的例子来给你最好的答案对于你上面的问题这么做无疑是最简洁的,如果你想解决你实际的问题,请
你举出一个代表性的例子,大家也好有的放矢。
我说一下我自己的思路,我在做一个会员管理系统。
有一个管理员表记录有那些管理员及管理员的基本信息,有一个Admin_ID。
有一个权限表记录有那些权限,比如说增加、修改、删除
有一个角色表记录有那些角色,比如:录入员、管理员
有一个角色权限表记录每一角色具有那些权限,比如录入员有增加这一权限,
管理员有录入、修改、删除权限
有一个表记录某管理员有那些角色:如管理员1有录入员这一角色。
有一个表记录某管理员具有那些权限:例如管理员1有修改这一权限。
有一个表记录有那些功能
还有一个表记录要进行某项功能需要那些权限,例如进行文章录入这一功能,只要有增加或修改权限都可以进行文章录入这一功能。假设有一管理员某某。他具有角色录入员,又具有删除文章这一个权限。由于他有管理员这一角色,则他获得对应权限:增加,再加上他具有删除的权限所以他的总权限是增加、删除。如果他还具有管理员角色,则他的权限是增加、修改、删除、增加、删除的并集:增加、删除、修改。如果他需要进行文章录入这一功能。
文章录入需要的权限为增加、修改、删除、使用HTML、使用javascript。则和他的权限相交,交集不为空,则他具有文章录入这一功能,但只能使用增加、修改和删除这三个权限。总的思路是这样。
因为每人每进入一个页面都需要判断,所以我希望它的速度能快一点。