Mysql 如何使用DQL执行关系划分?

Mysql 如何使用DQL执行关系划分?,mysql,symfony-1.4,doctrine-1.2,doctrine-query,Mysql,Symfony 1.4,Doctrine 1.2,Doctrine Query,当尝试使用Doctrine 1.2执行关系划分时,我收到一个“重复别名”错误,该错误与下面查询中的DISTINCT类似: SELECT Data.ID FROM Data INNER JOIN TaggedData ON (Data.id = TaggedData.data_id) INNER JOIN Tag ON (Tag.id = TaggedData.tag_id) WHERE Tag.id IN ('1' , '2') HA

当尝试使用Doctrine 1.2执行关系划分时,我收到一个“重复别名”错误,该错误与下面查询中的DISTINCT类似:

SELECT 
    Data.ID  
FROM 
    Data 
INNER JOIN 
    TaggedData ON (Data.id = TaggedData.data_id) 
INNER JOIN 
    Tag ON (Tag.id = TaggedData.tag_id) 
WHERE 
    Tag.id IN ('1' , '2') 
HAVING COUNT(DISTINCT tag.iD)=2
如果我从查询中删除DISTINCT,它会运行,但不会得到我想要的。有没有一个合适的方法让教义通过这个问题

具体代码:
因为您只返回一个值,所以只需执行原始SQL:

    $sql = <<<SQL

SELECT 
    Data.ID  
FROM 
    Data 
INNER JOIN 
    TaggedData ON (Data.id = TaggedData.data_id) 
INNER JOIN 
    Tag ON (Tag.id = TaggedData.tag_id) 
WHERE 
    Tag.id IN ('1' , '2') 
HAVING COUNT(DISTINCT tag.iD)=2

SQL;

    $conn = Doctrine_Manager::getInstance()->getConnection('connection_name');
    $id = $conn->fetchOne($sql);

$sql=您需要一个
GROUPBY
子句来使用having WITH WITH distinct。
因此,我想如果您在
拥有
之前添加
GROUP BY Data.ID
,一切都会好起来。

在这种情况下,我的示例简化了太多。因此,我将返回多个对象实例。您确定吗?-这似乎在常规SQL中有效,我现在正尝试将其转换为DQL。也许不需要添加分组依据,但使用
have
而不使用
groupby
不是最佳做法。顺便说一下,我不是条令专家,但groupBy('Data.ID')
应该能解决您的问题。嗯,这里的问题肯定与条令有关。它一直在窃听不同的存在。事实证明,在切换到原始查询后,我确实需要它!谢谢你至少提到这一点,因为我相信这已经解决了我的最后一个问题。
    $sql = <<<SQL

SELECT 
    Data.ID  
FROM 
    Data 
INNER JOIN 
    TaggedData ON (Data.id = TaggedData.data_id) 
INNER JOIN 
    Tag ON (Tag.id = TaggedData.tag_id) 
WHERE 
    Tag.id IN ('1' , '2') 
HAVING COUNT(DISTINCT tag.iD)=2

SQL;

    $conn = Doctrine_Manager::getInstance()->getConnection('connection_name');
    $id = $conn->fetchOne($sql);