0

我有一个关系 mysql 数据库设置。我想从主行中提取一项的所有数据,并在一个查询中提取所有关系数据(即多个关联行)。除了一个查询中的多个 JOIN 语句之外,最简单/最好的方法是什么?

当前使用的表和查询如下。

关系数据

------------------------------------------------------------------------------------------------------------------------------
| value_id | value_site_id | value_field_set_id | value_field_setting_id | value_parent_id | value_parent_type | value_value |
------------------------------------------------------------------------------------------------------------------------------

主表

-----------------------------------------------------------------------
| item_id | item_site_id | item_country_id | item_category_id | etc etc
-----------------------------------------------------------------------

查询是

SELECT fs.field_variable_name, fs.field_type, fv.value_value, fv.value_parent_id
FROM T_field_values AS fv 
    INNER JOIN T_field_settings AS fs ON fv.value_field_setting_id=fs.field_id
WHERE fv.value_parent_type=:type &&
    fv.value_parent_id=:id;
4

1 回答 1

2

最好的方法是使用多个JOIN从句,每个关系一个。

不要害怕JOIN. 这是标准做法。

另一种方法是为每个查询使用一个子查询,但查询优化器无论如何都会将它们变成 JOIN。

JOIN查询将更容易阅读。

编辑

我明白了,你有某种形式的 EAV 表。您的案例有点复杂,并且没有完整的结构(缺少 T_field_settings)和一些示例数据,我不会尝试提供确切的查询,但请在此处查看我之前的答案,了解如何使用自联接以从 EAV 表中获取结果。它应该让你走上正确的轨道。

于 2010-05-05T15:41:52.383 回答