这是我的客户请求调整现有的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