Mysql 分组前的条令

Mysql 分组前的条令,mysql,symfony,doctrine-orm,zend-framework2,Mysql,Symfony,Doctrine Orm,Zend Framework2,产品特性 我只想在每个产品的功能中得到一个结果 我需要通过使用MAX,MIN来选择特性中的最佳替代方案 例如,我在Product中有一个结果,在Feature中有三个关联,Feature中有一个“value”属性,我想得到产品,其中“value”是这三个记录中最低的一个 $queryBuilder = $this->entityManager->createQueryBuilder(); $queryBuilder->select('b, MIN(b.value

产品特性

我只想在每个产品的功能中得到一个结果

我需要通过使用MAX,MIN来选择特性中的最佳替代方案

例如,我在Product中有一个结果,在Feature中有三个关联,Feature中有一个“value”属性,我想得到产品,其中“value”是这三个记录中最低的一个

    $queryBuilder = $this->entityManager->createQueryBuilder();
    $queryBuilder->select('b, MIN(b.value) as min_value')
        ->from('Feature', 'b')
        ->where('b.value = min_value')
        ->groupBy('b.product');

那就是我停下来的地方。它只为产品返回一行,但我想要许多产品,每个产品有一个特性。此外,它无法识别where中的select别名。

能否复制并跳过实际的错误消息?它说min_值不是有效列。它不接受where中的别名。这是sql行为,而不是教义。如果您想使用它,您必须在from/join中使用嵌套查询,但原则也不允许这样做。啊,我以前也遇到过类似的问题。您需要将
min\u值
声明为
HIDDEN
字段:
select('b,min(b.value)为HIDDEN min\u值)
。更多关于
HIDDEN
关键字的信息:如果我尝试在where中使用它,它仍然会失败。SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“sclr_20”->where('b.value=min_value')这实际上表明存在列不匹配问题。你能用实体和数据库结构更新你的问题吗?