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

来源:互联网 发布:如何利用微信推广淘宝 编辑:程序博客网 时间:2024/06/04 17:55
在使用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才会认为(分析为)是一个表
0 0