我有一個數據表,我允許人們添加元數據到該表。什麼SQL查詢或視圖將顯示「動態列」
我給他們一個接口,允許他們對待它,好像他們將額外的列添加到他們的數據存儲在表中,但我實際上將數據存儲在另一個表中。
Data Table
DataID
Data
Meta Table
DataID
MetaName
MetaData
所以,如果他們想存儲數據,日期和名字,然後我不得不在數據表中的數據表,並在metaname單詞「日期」,並在該日期元數據以及元表中的另一行,元名稱中包含「名稱」和元數據中的名稱。
我現在需要一個查詢,它從這些表中獲取信息,並將其呈現爲來自具有兩個額外列「Data」和「Name」的單個表,因此對於客戶來說它看起來像是有一個表與他們的自定義列:
MyTable
Data
Date
Name
或者,換句話說,我怎麼從這裏去:
Data Table
DataID Data
1 Testing!
2 Hello, World!
Meta Table
DataID MetaName MetaData
1 Date 20081020
1 Name adavis
2 Date 20081019
2 Name mdavis
到這裏:
MyTable
Data Date Name
Testing! 20081020 adavis
Hello, World! 20081019 mdavis
幾年前,當我在PHP中使用MySQL時,我做了兩個查詢,第一個是獲取額外的元數據,第二個是將它們連接在一起。我希望現代數據庫有處理這個問題的替代方法。
與this question的選項3相關。
- 亞當
所以這是兩個查詢選項,在這裏我先找出什麼「動態」欄目我需要從元表中拉入,然後從這些結果構建一個查詢? – 2008-10-20 19:41:26
是的,但是,您可以在單個存儲過程中動態執行此操作。如果你的MetaNames是固定的,你可以按原樣使用上面的查詢,否則它將是動態的。我會盡快發佈一些代碼,以便快速生成代碼。 – 2008-10-20 19:44:37