2013-08-06 39 views
0

我在我的unidata數據庫中有兩個文件,如下所示。unidata命令查詢來自兩個文件的數據

CUSTOMER

[email protected] 
    -NAME 
    [email protected] (multi-valued, virtual attribute) 

HOBBY

[email protected] 
    -HOBBY 

CUSTOMERHOBBY是一對多的關係。我想查詢一個適合某種愛好的顧客名單。 unidata命令會是什麼?

期待解決方案。謝謝。

+0

@CUSTOMERID在這裏是多值的;或者「HOBBY」文件的結構如何讓您每個愛好擁有多個客戶。另外,這是關於U2的UniJPA驅動程序的問題嗎?如果是這樣,作爲產品經理電子郵件[email protected]會很樂意與您談談您的使用情況。謝謝! –

回答

1

下面是一個簡單的查詢,您可以在ECL運行提示

LIST HOBBY WITH HOBBY = "MyHobby" @CUSTOMERID @CUSTOMERID.NAME

讓我來解釋這一點。

當你正在尋找一個多對1間的關係,如果從「多」表開始,你可以做到這一點使用虛擬詞典詞條」(我知道,反直覺吧?)

LIST HOBBY

這裏我們只是指示引擎做一個簡單的HOBBY文件數據顯示。

WITH WITH HOBBY = "MyHobby"

我讓你已經創建了一個字典項叫做HOBBY假設 - 可能是d型指向正確的屬性。

@CUSTOMERID

另一個假設,你有一個指向它具有@CUSTOMERID在HOBBY的屬性d型詞典條目。我假設@CUSTOMERID是這個答案的唯一值。這只是告訴列表,從每個記錄

@CUSTOMERID.NAME

這是你需要創建,如果你還沒有一個I型辭典顯示這條信息。基本上,在字典項目的屬性2中,您將擁有類似TRANS("CUSTOMER",@CUSTOMERID,2,"X")的內容。這是告訴它用當前業務記錄的@CUSTOMERID中的ID來讀取記錄,並返回屬性2(我假設屬性2是存儲客戶名稱的位置,根據需要進行更改。「X」告訴TRANS功能,只是返回一個空字符串的客戶記錄無法被發現。

+0

我非常喜歡你在示例中使用的'@ filename'風格。我可能會建議'@ filename.dictname'的結構對任何TRANS類型的字典都有用。我喜歡'@ CUSTOMER.ID'和'@ CUSTOMER.NAME'作爲上面使用的示例。它立即清楚它的TRANS類型,它正在從哪個文件訪問數據,以及該文件的屬性是什麼。 –

0

丹,

我想你已經假定比給予更多。所提供的信息並不表明,有兩個方向的鏈接,只有該愛好代碼包含在CUSTOMER文件中。

鑑於所提供的信息,這應該工作:

LIST CUSTOMER WITH @HOBBYID "MyHobby" NAME @HOBBYID 

,或者,如果你想使用HOBBY而不是@HOBBYID比較/選擇反對:

LIST CUSTOMER WITH EVAL "TRANS(HOBBY,@HOBBYID,HOBBY,'X')" = "MyHobby" NAME @HOBBYID 

當然最好如果您在CUSTOMER字典中創建了翻譯字典項目,則可以使用該字典替代使用「EVAL ...」子句。

+0

嗨rbl,我的回答是在他們澄清編輯之前。如果你看問題歷史,你會看到結構與之前稍有不同。請注意@HOBBYID是多值的提問者建議,所以TRANS不適用於該字段。不過,在他們的具體情況下,「虛擬屬性」的含義尚不清楚,因此澄清可能會再次改變答案。 –

+0

嘿傢伙,對於不清楚的問題抱歉。我正在使用u2jpa驅動程序。我想知道當我「LIST CUSTOMER」的查詢時,它可以向我返回CUSTOMER信息(@CUSTOMERID,NAME,@HOBBYID,HOBBY)。 –

+0

@Dan McGrath,沒有冒犯的意思,我沒有看到歷史。我使用的是宇宙,而不是單一數據,所以TRANS的功能可能有所不同,但在宇宙中,它在多值字段上工作得很好。 – rbl