后台SQL查询是对主表提供信息逐条查询的,但是我想要的效果是如果这个从表没有数据主表不予显示,不知道怎么前台要怎么处理可以达到这种效果?
没有表达清楚,细节表不是和主表同时打开的,细节表只有主表选中行时传入一个字段,从表才会打开。
先用细节表查询,把它的ID放在一张临时表中,再反过来与主表做关联,我的那套系统就是这么写的。等用户选中过滤后的主表,细节表才会打开
select * from 主表 where exists (select id from 从表 where id=主表id)
SELECT *
FROM 主表,从表
WHERE 主表_id=从表_id(+);
select * from 主表 where id in (select id from 从表)
或者条件用exists写也行
首先要看你是什么数据库, 涉及到SQL写法可能不太一样
一般都是用左右连接来做的
select 你需要的字段 from 主表 right join 从表 on 从表.主表ID = 主表.ID
这是右连接写法, 意思是 包含右边(从表)全部记录, 以及符合on条件的左边(主表)的记录
根据数据库不同语句不同,思路是主表与从表建立关联,但只查出主表数据。以mssql为例 直接连接建立笛卡尔积,不需要建立左或右连接,查询加入distinct语句或用in来判断。
例如 a主表,b从表
select distinct a.* from a,b where a.id-b.id 或 select * from a where id in (select id from b)
用主表左连接从表,主表有数据时,从表才会显示数据。select * from 主表 A left join 从表 B on A.id = B.id