多表多条件查询

chenbin6562 2011-05-18 10:24:25
一张主表,关联有N张表
主表和外键表关系均是1:N的关系
用户要求实现一个所谓的综合查询,将所有表的条件均可作为查询条件,每次查询选择相应的条件,请问这种查询如何实现?
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chenbin6562 的回复:]
刚才试了哈,发现如果有3个表连接起来查询,会出现笛卡儿积~~这个又如何解决呢
比如主表A,还有两个外键表B,C
对应的关系都是一条主表记录对应3条记录
结果连接一起后,就出现有8条,冗余信息非常多
[/Quote]
需要关联 否则就是笛卡儿积
chenbin6562 2011-05-18
  • 打赏
  • 举报
回复
刚才试了哈,发现如果有3个表连接起来查询,会出现笛卡儿积~~这个又如何解决呢
比如主表A,还有两个外键表B,C
对应的关系都是一条主表记录对应3条记录
结果连接一起后,就出现有8条,冗余信息非常多
AcHerat 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenbin6562 的回复:]
引用 1 楼 acherat 的回复:
SQL code

select *
from zhuTable a left join n1 b on a.id = b.aid --and b.[] = ...
left join n2 c on a.id = c.aid --and c.[] = ...
...
where b.[] = ? and c.[] lik……

但这样有个……
[/Quote]

有固定条件的做视图试试看。
yangpo0522 2011-05-18
  • 打赏
  • 举报
回复
这里怎么弄积分呢???
chenbin6562 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acherat 的回复:]
SQL code

select *
from zhuTable a left join n1 b on a.id = b.aid --and b.[] = ...
left join n2 c on a.id = c.aid --and c.[] = ...
...
where b.[] = ? and c.[] lik……
[/Quote]
但这样有个问题,就是表连接太多了,速度上确实有点问题
AcHerat 2011-05-18
  • 打赏
  • 举报
回复

select *
from zhuTable a left join n1 b on a.id = b.aid --and b.[] = ...
left join n2 c on a.id = c.aid --and c.[] = ...
...
where b.[] = ? and c.[] like ? and ...
chenbin6562 2011-05-18
  • 打赏
  • 举报
回复
都有关联呢,每个表都是用主表里的主键~
都加了on 条件

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧