FuluoQued
2018-01-15 08:03
采纳率: 100%
浏览 985

Delphi主从表查询问题!

后台SQL查询是对主表提供信息逐条查询的,但是我想要的效果是如果这个从表没有数据主表不予显示,不知道怎么前台要怎么处理可以达到这种效果?

没有表达清楚,细节表不是和主表同时打开的,细节表只有主表选中行时传入一个字段,从表才会打开。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • ptacecgj 2018-02-24 06:01
    已采纳

    先用细节表查询,把它的ID放在一张临时表中,再反过来与主表做关联,我的那套系统就是这么写的。等用户选中过滤后的主表,细节表才会打开

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • qq_39260666 2018-01-15 09:51

    SELECT *
    FROM 主表,从表
    WHERE 主表_id=从表_id(+);

    评论
    解决 无用
    打赏 举报
  • kylincat 2018-01-15 12:39

    select * from 主表 where id in (select id from 从表)
    或者条件用exists写也行

    评论
    解决 无用
    打赏 举报
  • 堕落恶魔_Delphi 2018-01-15 13:19

    首先要看你是什么数据库, 涉及到SQL写法可能不太一样

    一般都是用左右连接来做的
    select 你需要的字段 from 主表 right join 从表 on 从表.主表ID = 主表.ID
    这是右连接写法, 意思是 包含右边(从表)全部记录, 以及符合on条件的左边(主表)的记录

    评论
    解决 无用
    打赏 举报
  • xy780308 2018-01-16 03:46

    根据数据库不同语句不同,思路是主表与从表建立关联,但只查出主表数据。以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)

    评论
    解决 无用
    打赏 举报
  • yyqiheye 2018-01-16 04:45

    用主表左连接从表,主表有数据时,从表才会显示数据。select * from 主表 A left join 从表 B on A.id = B.id

    评论
    解决 无用
    打赏 举报
  • lixiaojia 2018-01-19 02:23

    select * from 主表 where exists (select id from 从表 where id=主表id)

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题