ptvosp_payrecord 的 orderid = ptvosp_ordermodel的id
ptvosp_ordermodel 这张表是关联表 两个字段 productid 和 assetid 这两个字段是productid有值的话,那么assetid就没有值,要是assetid有值的话 那么productid就没有值。
然后要是productid 有值就去 product这张表查询productname
要是assetid 有值 就去 productasset这张表  这张表也是关联表 
 productasset.assetid=ptvosp_ordermodel.assetid 然后再根据 productasset.assetid 去表asset中查询 title字段

解决方案 »

  1.   

    要用动态sql了,因为表名不固定
      

  2.   

    这个好用存储过程来写....用动态SQL比较好
      

  3.   

    ptvosp_payrecord 的 orderid = ptvosp_ordermodel的id
    ptvosp_ordermodel表有 id,productid,assetid,type4个字段
    根据ptvosp_ordermodel.id 可以知道ptvosp_ordermodel.type 
    ptvosp_ordermodel.type 为0的话 那么用productid去表product查询
    product.name 要是type=1的话 那么用assetid去表 productasset查询
    productasset.assetid 再根据productasset.assetid去表asset查询asset.title看这个能不能写出来呢
      

  4.   

    create or replace procedure testpro(productid in number, assetid in number) as
      typevalue number;
      v_sql     varchar2(12);
      rvalue    varchar2(12);
    begin
      select type
        into typevalue
        from ptvosp_ordermodel
       where ptvosp_ordermodel.id = orderid;
      if typevalue = 0 then
        v_sql = 'select p.name from product p where p.productid =' || productid;
      else
        v_sql = 'select a.title from productasset e where r.assetid =' || assetid;
      end if;
      execute immediate v_sql
        into rvalue;
    exception
      when others then
    end;
      

  5.   


    sql>select sb('张磊') from dual;
    true