0

我希望我正确地问了这个问题。我有一个按 object_id 分组的对象表。它们存储为键/值。我认为这很简单,但我无法在任何地方找到解决方案。我正在尝试使用最有效的方法来查询此表以返回基于多个 meta_name 值的完整对象。这是表结构:

数据库结构

这是我到目前为止的代码,它非常适合查询一个值:

SELECT data2.object_id,data2.object, data2.meta_name, data2.value_string, data2.value_text FROM meta_data AS data1
LEFT JOIN meta_data AS data2 ON(data1.object_id = data2.object_id)
data1.object="domain"
AND data1.meta_name = "category"
AND data1.value_string = "programmer"

这给了我以下结果。这对于单一分类法(类别程序员中的域)非常有用。

结果

当我想使用类别程序员查询所有域并且颜色为红色并且可能还有其他 meta_name = value_strings 时,问题就出现了。除了从 PHP 进行多个查询之外,我找不到任何解决方案(出于明显的性能原因,我想避免这种情况)。

我需要指出,对象将即时创建,并且没有特定的模式(这是具有此结构的起点),因此我无法硬编码并假设有关对象的任何内容(对象可能具有更多元属性在任何给定时间从管理面板定义给他们)。

再次,我希望我问的这个问题是对的,因为过去 3 天我通过在线搜索找到了解决方案完全不走运。

非常感谢您提前对可以帮助我的 MySQL 专业人士!

4

1 回答 1

0

在这种情况下,解决方案通常会查询所有记录以避免多次查询,然后将数据对象拼接在一起以提供所需的格式。然后您可以在这些对象上开发简单find()的方法来进一步过滤结果(例如使用数组函数)

如果您对确切的实现感兴趣,我鼓励您查看 WordPress - 您注意到分类法。作为一个开源项目,您可以查看他们的代码以了解如何完成此操作的示例。看看Taxonomies APIMeta API

于 2012-07-06T14:45:02.270 回答