Data Shaping技術--Shape Append 命令

來源:互聯網
上載者:User
Shape APPEND 命令將子 Recordset 分配給父 Recordset 中 Field 對象的 Value 屬性。

文法

SHAPE {parent-command} [[AS] parent-alias]

APPEND ({child-command} [AS] child-alias

RELATE parent-column TO child-column...) [[AS] chapter-alias] ...

組成說明

該命令的組成部分為:

parent-command, child-command 如下之一。

在角括弧(“{}”)中的查詢命令,返回 Recordset 對象。命令發布給基本資料提供者,其文法取決於該提供者的要求。雖然 ADO 並不要求使用任何指定的查詢語言,但通常是使用結構化查詢語言 (SQL) (SQL)。圓括弧(“()”)是必需的關鍵字,它們將子集列追加到引用由查詢命令返回的 Recordset 的父。


以前成形的 Recordset 的名稱。


另一個 Shape 命令。


TABLE 關鍵字,後跟表的名稱。
parent-column 由 parent-command 返回的 Recordset 中的列。

child-column 由 child-command 返回的 Recordset 中的列。

... “parent-column TO child-column”子句實際上是列表,並用逗號將每個定義關係分隔開。

chapter-alias 別名,對追加到父的列的引用。

parent-alias 別名,對父 Recordset 的引用。

child-alias 別名,對子 Recordset 的引用。

... 在 APPEND 關鍵字後面的子句實際上是列表(每個子句使用逗號分隔),定義被追加到父的另一個列。

操作

發出 parent-command 並返回父 Recordset。然後發出 child-command 並返回子 Recordset。

例如,parent-command 可以從客戶表返回公司的客戶 Recordset,而 child-command 從定貨表返回所有客戶的定單 Recordset。

一般,父和子 Recordset 對象必須各自擁有用於關聯父和子的列。列在 RELATE 子句中命名,parent-column 在先,child-column 在後。在各自的 Recordset 中,列可以有不同名稱,但必須引用相同資訊以便指定有意義的關係。例如,Customers 和 Orders Recordsets 可以同時擁有 customerID 欄位。

資料構形將子集列追加到父 Recordset。子集列中的值是對子 Recordset 中列的引用,子 Recordset 滿足 RELATE 子句。即在給定父行中的 parent-column 與在子集子的所有行中的 child-column 具有相同的值。

當您訪問在子集列中的引用時,ADO 將自動檢索由參考資料表示的 Recordset。注意儘管已經檢索了全部子 Recordset,但子集(chapter)僅表示行的子集。

如果追加的列沒有 chapter-alias,則會自動產生其名稱。列的 Field 對象將被追加到 Recordset 對象的 Fields 集合,其資料類型將是 adChapter。

有關定位分級 Recordset 的詳細資料,請參閱訪問分級 Recordset 中的行。

參數化命令

如果您正在處理大的子 Recordset(尤其是比父 Recordset 大),卻只需要訪問部分子子集,那麼,使用參數化命令會更有效。

non-parameterized command(非參數化命令)同時檢索整個父和子 Recordsets,並將子集列追加到父,然後為每個父行指定相關子子集的引用。

parameterized command(參數化命令)檢索整個父 Recordset,但在訪問子集列時僅檢索子集 Recordset。這種檢索策略的差別可以有益的效能好處。

例如,可以指定如下:

"SHAPE {SELECT * FROM customer}
APPEND ({SELECT * FROM orders WHERE cust_id = ?}
RELATE cust_id TO PARAMETER 0)"
父和子表通常擁有列名 cust_id。child-command 有預留位置(即“?”),受 RELATE 子句引用(即“...PARAMETER 0”)。關係在於顯性標識的 customer 表 parent-column(即 cust_id)和隱性標識的 orders 表 child-column(即 cust_id)之間,由預留位置和“PARAMETER 0”指定。

注意 PARAMETER 子句僅屬於 Shape 命令文法。與 ADO Parameter 屬性和 Parameters 集合均無關聯。

在執行 Shape 命令時,發生如下情形:

執行 parent-command,並返回 customer 表的父 Recordset。


子集列被追加到父 Recordset。


在訪問父行的子集列時,customer.cust_id 列的值將替換 orders.cust_id 的預留位置,並執行 child-command。


orders 表(在此,orders.cust_id 列的值與 customer.cust_id 列的值相匹配)的所有行被檢索。


對檢索到的子行(即子 Recordset 的 chapter)的引用被放置在父 Recordset 當前行的子集列。


當訪問另一個行的子集列時,重複步驟 3-5。
插入 Shape COMPUTE 命令

現在將參數化 Shape 命令的參數化命令嵌入任意嵌套數量的形狀 COMPUTE 命令中是有效。例如:

SHAPE {select au_lname, state from authors} APPEND
((SHAPE
(SHAPE
{select * from authors where state = ?} rs
COMPUTE rs, ANY(rs.state) state, ANY(rs.au_lname) au_lname
BY au_id) rs2
COMPUTE rs2, ANY(rs2.state) BY au_lname)
RELATE state TO PARAMETER 0)

Shape Compute 命令


Shape COMPUTE 命令產生父 Recordset(其列由對子 Recordset 的引用組成)、可選的列(其內容是對子 Recordset 或以前成形的 Recordset 執行合計函數的結果)和在可選的 BY 子句中開列出的任何子 Recordset 的列。

文法

"SHAPE {child-command} [AS] child-alias

COMPUTE child-alias [ ,aggregate-command-field-list]

[BY grp-field-list]"

組成說明

該命令的組成是:

child-command 如下之一。

在角括弧(“{}”)中的查詢命令,返回 Recordset 對象。命令發布給基本資料提供者,其文法取決於該提供者的要求。雖然 ADO 並不要求使用任何指定的查詢語言,但通常是使用結構化查詢語言 (SQL) (SQL)。


以前成形的 Recordset 的名稱。


另一個形狀(Shape)命令。


TABLE 關鍵字,後跟表的名稱。
child-alias 別名,用於引用由 child-command 返回的 Recordset。在 COMPUTE 子句的列的列表中需要 child-alias,用於定義父和子 Recordset 對象的關係。

aggregate-command-field-list 列表,定義在產生的父中的列,含有對子 Recordset 執行合計函數所產生的值。

grp-field-list 在父和子 Recordset 對象中的列的列表,指定在子中的行如何分組。

對在 grp-field-list 中的每個列,在父和子 Recordset 對象中有對應的列。對父 Recordset 的每個行,grp-field-list 列有唯一的值,並且由父行引用的子 Recordset 由子行(其 grp-field-list 列含有與父行相同的值)單獨組成。

如果 COMPUTE 子句包含合計函數,但沒有 BY 子句,那麼,只有一個父行含有整個子 Recordset 的合計值。如果有 BY 子句,那麼,有多個父行均分別含有引用和子 Recordset 的合計值。

操作

child-command 被發布給提供者,並返回子 Recordset。

COMPUTE 子句指定父 Recordset 的列,該 Recordset 可以是對子 Recordset 的引用、一個或多個合計、計算運算式或新列。如果有 BY 子句,那麼,它定義的列同時被追加到父 Recordset 中。BY 子句指定子



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。