教义 - 计算来自不同表的记录

Posted

技术标签:

【中文标题】教义 - 计算来自不同表的记录【英文标题】:Doctrine - count records from different tables 【发布时间】:2012-04-07 15:33:29 【问题描述】:

我想从三个不相关的不同表中获取计数。我正在为此使用此 SQL 查询。

SELECT 
    (SELECT COUNT(DISTINCT id) FROM user) AS userCount, 
    (SELECT COUNT(DISTINCT id) FROM item) AS itemCount, 
    (SELECT COUNT(DISTINCT id) FROM sub_category) as categoryCount;

上述查询可以使用 DQL 吗?还是我必须使用 rawSQL 查询?

我正在使用学说 1.2.4

【问题讨论】:

【参考方案1】:

在四处挖掘之后,我自己找到了解决方案。即直接使用 pdo 连接实例。

$q = Doctrine_Manager::getInstance()->getCurrentConnection();
$result = $q->execute(' SELECT 
    (SELECT COUNT(DISTINCT id) FROM user) AS userCount, 
    (SELECT COUNT(DISTINCT id) FROM item) AS itemCount, 
    (SELECT COUNT(DISTINCT id) FROM sub_category) as categoryCount;'
);
$result->fetchAll(PDO::FETCH_ASSOC);

虽然这对我现在有效。我仍然想知道是否可以将其转换为 DQL。我尝试了不同的语法和方法,例如 Doctrine 的 RAW SQL,但无法正常工作。

【讨论】:

以上是关于教义 - 计算来自不同表的记录的主要内容,如果未能解决你的问题,请参考以下文章

创建来自两个不同系统的两个相同表的视图以仅返回唯一记录

计算来自 2 个不同表的 2 行之间的不匹配 - MySQL

显示来自两个不同表的两列之间的差异(比较表)

SQL:对来自两个不同表的值求和

来自多个表的 MySQL 最新相关记录

两个不同子类扩展同一个实体实例时的教义继承策略