這是我的客戶請求調整現有的Perl腳本。然而,最終的實際數據庫結構讓我感到困惑。查詢自定義元數據字段?
要求看起來很簡單:
only pull records where _X begins with 1, 2, or 9.
然而,底層的數據庫是不是那麼簡單,這裏是他們的DBA的方針:
「_X是一個自定義元數據字段的數據庫存儲這些數據在customData表中的行而不是列中爲了以高效的方式查詢自定義數據表,您需要知道Fielddef表中自定義字段的Field_ID:
SELECT Field_ID FROM FieldDef WHERE Name = "_X";
This returns:
10012
「現在您可以查詢CustomData。例如:
SELECT Record_ID FROM CustomData where Field_ID="10012" AND StringValue="2012-04";
他還建議,在我的情況,很可能這將是:
"SELECT Record_ID FROM CustomData where Field_ID="10012" AND (StringValue LIKE '1%' || StringValue LIKE '2%' || StringValue LIKE '9%')
奇怪的是,現有的Perl腳本不包含像什麼「選擇RECORD_ID FROM」但都像「SELECT StringValue FROM」。
所以這就是爲什麼我在這裏非常困惑:什麼是「存儲在行中,而不是列」?爲什麼首先查詢Field_ID表,然後CustomData?在這個週末我無法與他們溝通,但真的希望對整個事情有所瞭解,希望專家能夠幫我整理整個結構。
更多信息(表模式):
現有的Perl腳本:(重點線72-136)
在此先感謝。
我們需要更多的信息,然後..你能顯示錶定義,以及perl腳本使用什麼數據。 – Konerak 2012-04-21 08:51:51
當然,我會粘貼到pastbin然後更新問題。 – Kevin 2012-04-21 09:03:47
聖**是一些可怕的EAV:P這是如何執行的?哎喲! – Konerak 2012-04-21 16:25:59