有两个表,一个包含文章,另一个包含那些文章的自定义字段,其中一篇文章与许多自定义字段的关系。
为每个字段进行连接以一次性获取全部数据的效率如何?
还是有更好的方法来允许在 where 子句中使用自定义字段?
我正在考虑这个或更改表模式以适应自定义字段。
如果您需要按自定义属性过滤文章,您可以执行以下操作:
SELECT * FROM Article WHERE IDArticle IN(SELECT IDArticle FROM ArticleCustomProp WHERE CustomFieldValue='value')
如果您需要获取所有自定义属性的文章,您可以执行以下操作:
SELECT * FROM Article A LEFT JOIN ArticleCustomProp CP ON A.IDArticle=CP.IDArticle
WHERE A.IDArticle=15
您在这里遇到的一个问题是字段类型。在您的 ArticleCustomProp 中,您可以拥有:
IDArticle (INT)
自定义属性名称(字符串)
自定义属性值 (?)
问题是为 CustomPropertyValue 字段提供什么类型。如果您需要混合多种类型的值,则必须找到一种通用方法将数据保存到此字段,而不管数据类型如何。希望它可以帮助你。让我知道我是否可以为您提供任何其他帮助。