动态创建数据窗口时省略表名的方法

本文介绍如何在PowerBuilder中通过调整SQL语句格式来优化数据窗口列名显示,避免因表关联导致的列名冗余问题。通过使用INNER JOIN及正确包裹子查询的方式,可以使列名更加清晰易读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用synatax动态创建数据窗口时,如果我们关联了两个表,生成的列明会变为"表名_列名"的格式,但可能有时候又变为了仅"列名"的格式,很是困扰

    如果我们在设计数据库时已经保证每个表的字段名称是唯一的,那么可以使用下面的方法进行处理,例如有两个表

    CREATE TABLE T_MASTER(
        MASTER_NO        VARCHAR(10)    NOT NULL,
        MASTER_MEMO      VARCHAR(255)   NULL
    )       

    CREATE TABLE T_DETAIL(
        DETAIL_NO        VARCHAR(10)    NOT NULL,
        DETAIL_DNO       VARCHAR(10)    NOT NULL,
        DETAIL_MEMO      VARCHAR(255)   NULL
    )       

    如果使用一般的语法动态创建数据窗口时,不管是使用
    SELECT MASTER_NO,MASTER_MEMO,DETAIL_DNO,DETAIL_MEMO FROM T_MASTER,T_DETAIL WHERE MASTER_NO = DETAIL_NO
    还是使用
    SELECT T_MASTER.MASTER_NO,T_MASTER.MASTER_MEMO,T_DETAIL.DETAIL_DNO,T_DETAIL.DETAIL_MEMO FROM T_MASTER,T_DETAIL WHERE MASTER_NO = DETAIL_NO

    数据窗口列可能变为
    T_MASTER_MASTER_NO,T_MASTER_MASTER_MEMO,T_DETAIL_DETAIL_DNO,T_DETAIL_DETAIL_MEMO   

    这是因为PB为了避免列名重复而采用的一种命名方法,但这样就给我们实际应用时带来一定的小障碍,避免的方法也较简单,改写一下SQL语句即可
    SELECT MASTER_NO,MASTER_MEMO,DETAIL_DNO,DETAIL_MEMO FROM (T_MASTER INNER JOIN T_DETAIL ON MASTER_NO = DETAIL_NO) WHERE ....

    数据窗口列可能变为
    MASTER_NO,MASTER_MEMO,DETAIL_DNO,DETAIL_MEMO

    注意
    (1)INNER JOIN,不要担心这个市SQL92规范,几乎所有数据库都支持,放心使用,它同平常书写的方式可以等价转换。
    (2)括号,一定不能省略,否则不起作用。只有这样,PB才会认为(分析为)是一个表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值