2

私は、Oracle データベースの最上層に位置する独自のサーバー側言語を使用しています。この言語を使用すると、ダミー テーブルを使用して、データで満たされた既存のレコード構造を取得し、そのレコード構造に結合して、あたかもテーブルであるかのようにクエリを実行できます。

簡単な例を次に示します。

    //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 にはこのようなものがありますか? もしそうなら、どうにかして詳細情報やハウツーへのリンクを教えてくれるかもしれません。グーグルで調べても何も見つかりませんでした。おそらく間違ったキーワードを探しているのでしょう。

4

3 に答える 3

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

ドキュメンテーション

于 2012-07-18T17:59:54.403 に答える
2

役に立つかもしれない3つのこと:

  1. メモリーテーブル( CREATE TABLE mem_t (id (int)) ENGINE=MEMORY;)
  2. 一時テーブル ( CREATE TEMPORARY TABLE temp_t (id (int));)
  3. ビュー

一時テーブルは現在の接続にのみ表示されるのに対し、ビューとメモリ テーブルは共有リソース (通常のテーブルと同様) であることに注意してください。

SOに関する次の関連する質問もご覧ください。

于 2012-07-18T18:07:21.880 に答える
0

一時テーブルINSERT SELECT構文を使用してそれを実現し、後でテーブルを削除することができますが、パフォーマンスの面では最適ではありません

于 2012-07-18T18:02:13.223 に答える