sql数据库中多对多的查询语句怎样写?表如专业表:magor (mid magorname)

sql数据库中多对多的查询语句怎样写?表如专业表:magor (mid magorname),第1张

我不清楚你所谓的“想通过条件表查找出相应的专业表中的数据”是指通过一个条件去查多个专业信息,还是通过多个条件去查多个专业信息,还有如果是多个条件的话那么你这是“and”还是“or”的关系!问题最好还是能尽量表达清楚点。还有你的表和字段命名很不规范,如关系表m--i,条件表中的表名称(magorif)和其所拥有的字段(magorif)相同?

第一种情况:通过一个条件去查询专业表中的信息,想法就是通过关系表找到所有的专业ID,然后根据ID查询专业信息,当然这里的ID可能有0 、1、 或多个。图简单用in写就可以,如果你想提高效率的话,那就用exists。

in的方式:select * from magor where mid in (select distinct mid from m--i where fid=@fid) -- 其中@fid为条件参数

exists的方式: select T.* from magor T where exists (select * from m--i where fid=@fid and mid=T.mid)

当然程序里面可能是以条件表的其他字段,那么相信你可以相应找到@fid,思想都是一样的。

第二种情况:通过多个条件去查询专业表中的信息,or的情况很简单和上面一样,直接在where后加or fid=@fid2就行了。And话这种情况就相对复杂点了,如果只有两个条件可以直接用嵌套的条件去查询。但是我想实际情况条件多少个是无法预知的,那么无法用一条SQL搞定了,可以先视图,也可以用游标的方式去处理,相对复杂点!

自己看着办吧!问题确实没表达清楚!

可以这么做,建立一张视图,将zhengce,fagui,yanlun三张表联合起来,zid,fid,yid合并为gid。

然后通过sql语句查询。select * from myview where gid in(select gid from guanxi where gbj='a').


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10838837.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存