2012-07-18 29 views
2

我使用作为Oracle数据库顶层的专有服务器端语言。使用这种语言,您可以使用虚拟表来获取充满数据的现有记录结构,并在与该表结合的记录结构上运行查询。PHP + MySQL支持这种样式的虚拟表连接吗?

这里有一个简单的例子:

//DECLARE THE RECORD STRUCTURE 
    record data_out (
     1 prsnl [*] 
      2 person_id = f8 
      2 full_name = vc 
      2 position = vc 
      2 status = vc 
      2 last_access_dt_tm = vc 
      2 role [*] 
       3 role_name = vc 
       3 role_id = f8 
    ) with persistscript 

    //QUERY PEOPLE 
    select into "NL:" 
    from person p 
    where p.whatever_field = "QUALIFIER" 
    detail 

     a = a + 1 
     stat = alterlist(data_out->prsnl, a) 

     data_out->prsnl[a]->person_id = p.person_id 
     data_out->prsnl[a]->full_name = p.name_full_formatted 
     data_out->prsnl[a]->position = p.position 

    with time=10 

    //USE A DUMMY TABLE TO PULL IN MORE DATA FOR EACH PERSON 
    select into "NL:" 
    from (dumt d with seq = size(data_out->prsnl,5)) 
     ,rnd_role_def rrd 
     ,rnd_r_assign_hx rah 
    plan d 
    join rah 
     where rah.team_id = data_in->team_id 
     and rah.prsnl_id = data_out->prsnl[d.seq]->person_id 
     and rah.handoff_dt_tm > cnvtdatetime(curdate-90,curtime) 
    join rrd 
     where rrd.role_id = rah.role_id 
    order by d.seq, rrd.role_name 
    head d.seq 
     i = 0 
    head rrd.role_name 
     i = i + 1 
     stat = altlist(data_out->prsnl[d.seq]->role, i) 

     data_out->prsnl[d.seq]->role[i]->role_id = rrd.role_id 
     data_out->prsnl[d.seq]->role[i]->role_name = rrd.role_name 

    with time=10 

不PHP + MySQL的有这样的事?如果是这样,可以以某种方式指向我的链接与更多的信息或如何做。谷歌搜索没有为我提供任何东西 - 可能是搜索错误的关键字。

回答

2

使用临时表:

CREATE TEMPORARY TABLE temp1 

的临时表将通过当前的会话持续。您可以通过正常CREATE TABLE语法定义一个临时表中的字段:

CREATE TEMPORARY TABLE temp1(
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(50), 
) 

...或者你可以创建一个临时表,并允许查询数据定义列:

CREATE TEMPORARY TABLE temp1; 
INSERT INTO temp1 
    SELECT id, name FROM normal_table 

文档

0

可以使用temporary tablesINSERT SELECT语法来实现它,后来删除表 - 但它不会是最好的性能

+1

临时表是不是性能责任。如果你在每个请求中运行临时表,当然。但是,正确使用临时表可以提高**性能。 – 2012-07-18 18:06:07